home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / cnet / wof_cnet.lha / Game.ASC < prev    next >
Text File  |  1995-09-29  |  91KB  |  1,530 lines

  1. /**************************************************************************\
  2.         $VER: Wheel of Fortune ASCII, v6.41a by Dotoran! (29-Sep-95)
  3. \**************************************************************************/
  4. options results;signal on SYNTAX;signal on ERROR;signal on IOERR
  5. tr=transmit;se=sendstring;gc=getchar;gu=getuser;qu=query;bf=bufferflush
  6. bbsidentify name;bbsname=result;bbsidentify sysop;sysop=result
  7. seed=random(0,1000,time('s'));call READCONFIG
  8. changewhere "WOF ASC Game";oldwh=result
  9.  
  10. BEGIN: /* Entry Point if Winner Chooses to RePlay the Game. */
  11.     key1='n1'center(k1,78+(m1*3));key2='n1'center(k2,78+(m2*3))
  12.     d=substr(date('s'),5,2);d1=substr(resetD,5,2);if resetM=1&d-d1>=resetV then call RESETGAME
  13.     logs=0;log.='';wh=1;action='Visited ';gu 6;street=result
  14.     gu 9;voice=result;gu 10;data=result;freespins=0;lo=0;BFlag=0
  15.     gu 41;sid=result;date=date('s');gu 7;t=result;timeleft=t%10'.'right(t,1)
  16.     dateL=date('m',date,'s')' 'strip(right(date,2),'l','0')', 'left(date,4)
  17.     gu 15;access=result;gu 17;maintA=result;spa=copies(' ',78);sp=0
  18.     wheel='15 10 4 5 3 1 8 6 5 12 3 1 13 2 7 14 6 4 3  2 6 9 4 5';wheal=overlay('11',wheel,42)
  19.     whe='100 150 200 250 300 400 450 500 600 750 1000 FREESPIN SURPRISE LOSETURN BANKRUPT'
  20.     cons='BCDFGHJKLMNPQRSTVWXZ';vows='AEIOU';if yvow=0 then cons=cons'Y';else vows=vows'Y'
  21.  
  22.     if ~exists(dfile'GameData') then call SETUP
  23.  
  24.     call READPLAYERS;if player=0 then do;players=players+1
  25.         player=players;player.player=handle'|0|0|0|0|0|0|0|0|0|0|x';end
  26.     parse var player.player handle'|'puzwon'|'monwon'|'puznum'|'moncur'|',
  27.                             played'|'percent'|'bonwins'|'boncash'|'mills'|',
  28.                             bmills'|'junk
  29.     call READDATA;call READSTATS;call READWINNER;call READWINNERS
  30.     call READBWINNERS;call READMILLIONAIRES;call READBMILLIONAIRES
  31.     call READBANKERS;call READLASTPLAYER
  32.  
  33. START: /* Display Title Screen, followed by Main Menu. */
  34.     tr 'f1q1';a=sysop' Broadcasting Presents:n1';tr center(a,81);call TITLE
  35.     tr center('Brought to you by: 'bbsname' TV!n1',81)
  36.     tr center('There are 'total' Known Puzzles!',78);tr key1;logmil=1
  37.     if shomil=1 then call MILLIONAIRES;if shomil=2 then do
  38.       se "f1n1View Regular Millionaires Listing? [No]: ";gc;a=result
  39.       if a~='Y' then tr 'No.';else do;tr 'Yes!';call MILLIONAIRES;end;end
  40.     if shobmi=1 then call BMILLIONAIRES;if shobmi=2 then do
  41.       se "f1n1View Bonus Millionaires Listing? [No]: ";gc;a=result
  42.       if a~='Y' then tr 'No.';else do;tr 'Yes!';call BMILLIONAIRES;end;end
  43.     if shoban=1 then call BANKERS;if shoban=2 then do
  44.       se "f1n1View All Time BEST WOF Player Listing? [No]: ";gc;a=result
  45.       if a~='Y' then tr 'No.';else do;tr 'Yes!';call BANKERS;end;end
  46.     if Mflag=1&exists(dfile'NewPuz') then do
  47.       se "n1Process User Created Puzzles Now? [No]: ";gc;a=result
  48.       if a~="Y" then tr "No.";else do;tr "Yes!#0 "dfile"Grow "dfile"}";end;end
  49.     logmil=0;call MENU
  50.  
  51. MAIN:;call MORE0 /* The Main WOF prompt. */
  52.     se 'n1['timeleft' Min.Left] Menu: >>>--U,H,Y,A,P,L,B,V,S,I,Q,?=Menu--> '
  53. MAIN1: /* Come back here if invalid command entered. */
  54.     gc;a=index('UHALBYPVSIQC!?/M',result);ck=CHECK();bf;if a=0 then signal MAIN1
  55.     if a=16 & Mflag=1 then do;tr 'Maintenance#0'dfile'Maint}q1';changewhere "WOF ASC Game"
  56.         if ~exists(dfile'GameData') | ~exists(dfile'Players') then signal QUIT3;else signal MAIN;end
  57.     if a=1 then do;tr 'User Config';se '#0 'dfile'UserConfig}';call READCONFIG;signal BEGIN;end
  58.     if a=2 then do;tr 'Hall of Fame';call HOFAME    ;signal MAIN;end
  59.     if a=3 then do;tr 'All Scores'  ;call ALLSCORES ;signal MAIN;end
  60.     if a=4 then do;tr 'Last Puzzles';call LASTPUZS  ;signal MAIN;end
  61.     if a=5 then do;tr 'Bonus Puzzles'; call BONUSPUZS ;signal MAIN;end
  62.     if a=6 then do;tr 'Your Stats'  ;call YOURSTATS ;signal MAIN;end
  63.     if a=7 then do;tr 'Play Game'   ;signal PLAYGAME;end
  64.     if a=8 then do;tr 'View Game Logs'
  65.       se 'f1n1View NEW Game Log? [Yes]: ';gc;a=result;if a='N' then tr 'No.'
  66.       else do;tr 'Yes!';call MORE1;tr '*0'dfile'Log.NEW.ASC}q1'key1;call MORE0
  67.         call WL("ca"handle" c6viewed the cfNEW cbGame Logc6.");end
  68.       se 'f1n1View OLD Game Log?  [No]: ';gc;a=result;if a~='Y' then tr 'No.'
  69.       else do;tr 'Yes!';call MORE1;tr '*0'dfile'Log.OLD.ASC}q1'key1;call MORE0
  70.         call WL("ca"handle" c6viewed the ceOLD cbGame Logc6.");end
  71.       signal MAIN;end
  72.     if a=9 then do;tr 'See Millionaires'
  73.       se 'f1n1See <R>egular or <B>onus Millionaires? [QUIT]: ';gc;a=result
  74.       if a='R' then do;tr 'Regular';call MILLIONAIRES;end
  75.       else if a='B' then do;tr 'Bonus';call BMILLIONAIRES;end
  76.       else tr 'Quit';signal MAIN;end
  77.     if a=10 then do;tr 'Instructions';call DOCS;signal MAIN;end
  78.     if a=11 then do;tr 'Quit Game'   ;call QUIT;signal MAIN;end
  79.     if a=12 & Mflag=1 then do;tr 'Cancel Game';signal CANCELGAME;end
  80.     if a=13 & Mflag=1 then do;call open(f1,dfile'LastPlayer','w')
  81.         call writeln(f1,'0|No One|No Where|0|0|1|0|x');call close(f1)
  82.         call READLASTPLAYER;tr 'Play Game';signal PLAYGAME;end
  83.     if a>13 then do;tr 'Main Menu';call MENU;signal MAIN;end
  84.   signal MAIN1
  85.  
  86. PLAYGAME: /* When a user chooses "P" for the first time. */
  87.     if LHan='No One' & play=0 & handle=winhan then do
  88.         call WL("ca"handle" c6tried to play first, but was the cbLast Winnerc6!")
  89.         se 'f1n1'hostM' comes up to you and whispers in your ear, "Sorry, 'handle
  90.         se ', but 'sysop' Broadcasting doesn''t allow recent winners to be '
  91.         se 'the FIRST player in a NEW Game. You''ll have to wait until another '
  92.         tr 'contestant has played the game."n1'
  93.         se 'On your way out of the studio, 'hostF' hands you a slip of paper. '
  94.         tr 'Reading it, you discover the new puzzle.n1';call SHOWPUZZLE
  95.         tr key2;signal QUIT2;end
  96.  
  97.     if handle=author then do
  98.         call WL("ca"handle" c6tried to play, but is the cbAuthorc6!")
  99.         se 'f1n1'hostF' and 'hostM' approach you from the wings.  'hostF' gives '
  100.         se 'you a playful slap on the butt. 'hostM' says, "Naughty. You wrote '
  101.         tr 'the puzzle and must wait until someone wins."n1'
  102.         se 'After a moment, 'hostM' continues, "However, we will show you how '
  103.         tr 'your puzzle is doing before you leave."n1';call SHOWPUZZLE
  104.         tr key2;signal QUIT2;end
  105.  
  106.     if newplay=0 & (sid=0 | access=0) then do
  107.         call WL("ca"handle" c6tried to play, but was a cbGuestc6/cbNew Userc6!")
  108.         se 'f1n1'hostM' looks at you quizically, "You''re NEW around here, aren''t '
  109.         se 'you?  We do not currently allow NEW Users & GUESTS to Play The Wheel of '
  110.         tr 'Fortune, sorry"n1'
  111.         se '"We will, however, show you how the current puzzle is doing, in case '
  112.         tr 'you''d like to play after you''ve been validated.", 'hostM' says.n1'
  113.         call SHOWPUZZLE;tr key2;signal QUIT2;end
  114.  
  115.     if Lflag=1 then do
  116.         call WL("ca"handle" c6tried to play, but is the cdLast Playerc6!")
  117.         se 'f1n1'hostM' laughs in your face and signals for a bouncer to throw '
  118.         se 'you out of the studio.  You were either the last player, or '
  119.         se 'have too much in common with the last player, and must wait for '
  120.         tr 'someone else to play.n1'
  121.         if chance=1 then do;a=random(1,9);b=random(1,9);if a=b then do
  122.             se 'n1As the bouncer approaches you, you kick him in the groin '
  123.             se 'and run onto the studio set. 'hostM' has no choice, but to let '
  124.             tr 'you play again!n1'key1;Lhan='Bouncer in Agony!'
  125.             call WL("ca"handle" c6beat up the cbBouncer c6to play again!")
  126.             signal PLAYGAME2;end;end
  127.         if chance>1 & (el>=(chance-1)*6) then do
  128.             se 'Twiddling his thumbs, 'hostM' looks at his watch, then '
  129.             se 'tells you, "'handle', it''s been '||(chance-1)*6||' hours since '
  130.             se 'you last played, and we haven''t had any new contestants, '
  131.             tr 'so come on down and take another spin!"n1'key1
  132.             call WL("ca"handle" c6waited the cbalotted time c6to play again!")
  133.             signal PLAYGAME2;end
  134.         se 'From over the bouncers shoulder, you get a glimpse of how '
  135.         tr 'the current puzzle is doing...n1';call SHOWPUZZLE
  136.         if chance>1 then do;se 'n1'hostM' then tells you, "'handle', if no other players take a '
  137.             tr 'turn in the next '||((chance-1)*6)-el||' hours, we''ll let you play again."';end
  138.         LHan="";tr key2;signal QUIT2;end
  139. PLAYGAME2: /* If a user succeeds in crippling the bouncer, come HERE! */
  140.     if puznum~=puzplay then do;puznum=puzplay;moncur=0
  141.         if handle~=winhan then do;played=played+1
  142.             call WL("ca"handle" c6just ceentered c6this cbGamec6!")
  143.             percent=((puzwon/played)*100)%1;end;end
  144.     if vanna=2&(vannaA=1|(vannaA=2&age>13)|(vannaA=3&age>15)) then do
  145.         se 'View graphic picture of Vanna White now? [No]: ';gc;a=result
  146.         if a~='Y' then tr 'No.';else do;tr 'Yes!'
  147.         se "L70 #"handle"? Glad to}L71 #"hostF",}L72 #"hostM" welcomes you to the show,}*4"dfile"Graphics/vanna.asc}@4";end;end
  148.     if vanna=1&(vannaA=1|(vannaA=2&age>13)|(vannaA=3&age>15)) then do
  149.         se "L70 #"handle"? Glad to}L71 #"hostF",}L72 #"hostM" welcomes you to the show,}*4"dfile"Graphics/vanna.asc}@4";end
  150.     if OLog<2&NLog<2&Spin<3&Gasc<4 then tr key1
  151. PLAY: /* Start of actual PLAY. Show logs, create wheel, etc... */
  152.     if consonants=0 & vowels=0 then do;solve=answer;signal GUESSPUZZLE0;end
  153.     if lo=0 then do;lo=1;call MORE1
  154.         if OLog=1 then tr 'f1Previous Game Log:n1*0'dfile'Log.OLD.ASC}q1n1'key1
  155.         if OLog=2 then do;se 'n1View OLD Game Log Now? [No]: ';gc;a=result
  156.             if a~='Y' then tr 'No.';else tr 'Yes!f1*0'dfile'Log.OLD.ASC}q1n1'key1;end
  157.         if NLog=1 then tr 'f1Current Game Log:n1*0'dfile'Log.NEW.ASC}q1n1'key1
  158.         if NLog=2 then do;se 'n1View NEW Game Log Now? [No]: ';gc;a=result
  159.             if a~='Y' then tr 'No.';else tr 'Yes!f1*0'dfile'Log.NEW.ASC}q1n1'key1;end
  160.         if spin=3 then do;se 'n1Use the [Q]uick or [W]edge Wheel Graphics? '
  161.           se '[Wedges]: ';gc;a=result;if a='Q' then do;tr 'Quick';Spin=0;end
  162.           else do;tr 'Wedges';spin=1;end;end
  163.         if gasc=4 then do;tr 'n1Possible Puzzle Guessing Formats:n1'
  164.           tr '>5[R]egular Format (You type ALL characters in Puzzle Title.)'
  165.           tr '>5<F>ill-In-Knowns (Known characters automatically entered in.)'
  166.           se 'n1Use which Puzzle Guessing format? [Regular]: ';gc;a=result
  167.           if a='F' then do;tr 'Fill-In-Knowns';gasc=2;end;else do;tr 'Regular';gasc=0;end;end;end
  168.     a=length(space(answer,0));b=a-(consonants+vowels);call MORE0
  169.     if b/a>.50 & wh=1 then do;tr 'n1'hostM' says, "We will now add $1000 to the Wheel!"'
  170.         tr key1;wheel=wheal;wh=2;end
  171.     tr 'f1*==========================================================================*'
  172.     tr '|>X<>X<>X<><><><>< >< >< >< > WHEEL OF FORTUNE < >< >< >< ><><><><>X<>X<>X<|'
  173.     tr '*==========================================================================*'
  174.     tr '                           Wheel Spots / Odds                               '
  175.     if wh=1 then tr '      1-$750, 1-$600, 1-$500, 1-$450, 3-$400, 3-$300, 3-$250, 3-$200,'
  176.     if wh=2 then tr '  1-$1000, 1-$750, 1-$600, 1-$500, 1-$450, 3-$400, 3-$300, 3-$250, 2-$200,'
  177.     tr '      2-$150, 2-$100, 1-Free Spin, 1-Lose Turn, 1-Bankrupt, 1-Surprisen1'
  178.     tr 'Current Puzzle Number: 'left(puznum,20)'Last Player: 'Lhan
  179.     tr 'Current Puzzle Author: 'left(author,20)'Last Winner: 'winhan'n1'
  180.     se 'PLAYER: 'left(handle,16)' WINNINGS: $';call CNUM(moncur)
  181.     se left(a,9)' PREVIOUS WINNINGS: $';call CNUM(monwon);tr a'n1'
  182.     if Banked=1 & monwon>0 & moncur<300 then do;a1='[U]se Previous';a3=''
  183.         a2='      Funds';s='U,';end;else do;a1='';a2='';a3='       ';s='';end
  184.     tr left(spa,13)a3'[S]pin the Wheel     [B]uy a Vowel   'a1
  185.     tr left(spa,13)a3'[G]uess the Puzzle   [Q]uit Play     'a2
  186.     tr;call SHOWPUZZLE;tr left(spa,33)'Free Spins: 'freespins'n1'
  187.     if consonants>0 & vowels>0 then tr center('Good Luck!n1',81)
  188.     if consonants=0 then tr center('There are ONLY Vowels left in this Puzzle!n1',81)
  189.     if vowels=0 then tr center('There are NO MORE Vowels left in this Puzzle!n1',81)
  190.     se '[Play] >>>--S,B,'s'G,Q--> '
  191. PLAY1: /* Come back here if invalid command is entered. */
  192.     gc;a=result;ck=CHECK();if index('!SBUGQ',a)=0 then do;bf;signal PLAY1;end;if a="!"&MFlag=1 then tr 'n1'answer
  193.     if a='U' & Banked=1 & monwon>300 & moncur<300 then do
  194.         tr 'Use Funds';signal USEFUNDS;end
  195.     if a='S' then do;tr 'Spin Wheel'  ;signal SPINWHEEL  ;end
  196.     if a='B' then do;tr 'Buy Vowel'   ;signal BUYVOWEL   ;end
  197.     if a='G' then do;tr 'Guess Puzzle';signal GUESSPUZZLE;end
  198.     if a='Q' then do;tr 'Quit Play'   ;signal MAIN       ;end
  199.   signal PLAY1
  200.  
  201. USEFUNDS: /* If user presses the "U" command. */
  202.     moncur=moncur+300;monwon=monwon-300;Banked=0
  203.   signal PLAY
  204.  
  205. SPINWHEEL: /* The user hits "S" to Spin the Wheel. */
  206.     if consonants=0 then do;se 'n1'hostM' reminds you, "'handle', '
  207.         tr 'remember, there are ONLY VOWELS left in this puzzle."'
  208.         call WL("ca"handle" c6tried to cfSPIN c6with ceONLY VOWELS c6left!")
  209.         tr key1;signal PLAY;end
  210.     if Spin=0 then do;se "f1n8Spinning: ";a1=random(1,24);t=slow%100
  211.       do i=1 to 24;se left(word(whe,word(wheel,i)),8)
  212.         call time('r');do until time('e')>=t;end;se 'h8';end i
  213.       do i=1 to a1;se left(word(whe,word(wheel,i)),8)
  214.         call time('r');do until time('e')>=t;end;se 'h8';end i
  215.       tr left(word(whe,word(wheel,a1)),8)
  216.       c=word(wheel,a1);end
  217.     if Spin=1 then do;a=random(25,60);sp=sp+a
  218.       do until sp<30;sp=sp-25;end;b=random(2,4)
  219.       a=sp-b;b=sp;if a<1 then a=1;action='Played '
  220.       do i=a to b;ii=i;if i>24 then ii=i-24;spot=word(wheel,ii)
  221.         call D0;end i;end
  222.     if c=12 then signal FREESPIN;if c=13 then signal SURPRISE
  223.     if c=14 then signal LOSETURN;if c=15 then signal BANKRUPT
  224.     a='100 150 200 250 300 400 450 500 600 750 1000';money=word(a,c)
  225.     tr 'n1There is $'money' showing on the Wheel!n1'
  226. SURPRISE0B: /* When a Surprise of more than $1000 comes up on the Wheel! */
  227.     call SHOWPUZZLE;se 'Type Your Guess: '
  228. SPINWHEEL1: /* Return here if the consonant was already guessed! */
  229.     gc;guess=result;ck=CHECK();if index(cons,guess)=0 then signal SPINWHEEL1
  230.     bf;se guess;call CNUM(money)
  231.     log="c6With c2$ca"a" c6on cfThe Wheelc6, ca"handle
  232.     log=log" c6guesses c9"guess"c6...";call WL(log)
  233.     if index(guessed,guess)>0 then do
  234.         call WL("c6Which was c9ALREADY cbGuessedc6!")
  235.         se '  Consonant Already Guessed!!w1hfhf'
  236.         signal SPINWHEEL1;end
  237.     if index(answer,guess)>0 then do;tr '  >>>---> GOOD GUESS!n1'
  238.         g=guessed;if g='' then g=guess;else g=g'-'guess
  239.         guessed=g;call COUNT;consonants=consonants-tot
  240.         call UNCOVER;Lhan=handle
  241.         if tot=1 then call WL("c6There was ce1 c9"guess"c6 in the puzzle: "puzzle)
  242.         if tot>1 then call WL("c6There were ce"tot" c9"guess"c6's in the puzzle: "puzzle)
  243.         if index(cons,guess)>0 then moncur=moncur+(money*tot)
  244.         if tot=1 then se left(spa,20)'There is 1 "'guess'" '
  245.             else se left(spa,20)'There are 'tot' "'guess'"''s '
  246.         tr 'in the puzzle.n1'key1;signal PLAY;end
  247.     if index(answer,guess)=0 then do;tr '  >>>---> WRONG!!n1'
  248.         g=guessed;if g='' then g=guess;else g=g'-'guess
  249.         guessed=g;Lhan=handle
  250.         call WL("c6But there were cbNO c9"guess"c6's in the puzzle: "guessed)
  251.         if freespins=0 then do;tr 'Awwww... Better Luck next time.'
  252.             call WL("ca"handle" c6is cffinished c6for this turn.")
  253.             call SAVEPLAYERS;call SAVEDATA;signal QUIT2;end
  254.         tr 'But not to worry, You have a Free Spin!'
  255.         call WL("c6However, ca"handle" c6has a cbFree Spinc6!")
  256.         freespins=freespins-1;tr key1;signal PLAY;end
  257. FREESPIN: /* If the "Free Spin" comes up on the Wheel! */
  258.     call WL("ca"handle" c6just landed on cbFREE SPINc6!")
  259.     se 'n1'hostM' says, "Congratulations 'handle', you now have a Free '
  260.     tr 'Spin!"';freespins=freespins+1;tr key1
  261.   signal PLAY
  262. LOSETURN: /* If the "Lose Turn" comes up on the Wheel! */
  263.     call WL("ca"handle" c6just landed on cdLOSE A TURNc6!")
  264.     se 'n1Frowning, 'hostM' tells you, "Uh Oh 'handle', looks like you '
  265.     tr 'Lose a Turn."n1';if freespins>0 then do
  266.         se '"That''s alright, however, because you still have a Free '
  267.         tr 'Spin!", 'hostM' says consolingly.';freespins=freespins-1
  268.         call WL("c6However, ca"handle" c6has a cbFree Spinc6!")
  269.         tr key1;signal PLAY;end
  270.     se '"That''s too bad, you weren''t doing all that bad. Well, you '
  271.     tr 'can try again next call", 'hostM' mumbles.';Lhan=handle
  272.     call WL("ca"handle" c6is cffinished c6for this turn.")
  273.     call SAVEPLAYERS;call SAVEDATA;signal QUIT2
  274. BANKRUPT: /* If the "Bankrupt" comes up on the Wheel! */
  275.     call WL("ca"handle" c6just landed on c9BANKRUPTc6!");call CNUM(moncur)
  276.     call WL("ca"handle" c6loses c2$ca"a" c6bucks!")
  277.     se 'n1"BANKRUPT! Only one on the whole wheel, and 'handle', you '
  278.     tr 'just found it", 'hostM' informs you.n1';moncur=0
  279.     if freespins>0 then do
  280.         tr '"Luckily you still have a Free Spin!", 'hostM' praises.'
  281.         call WL("c6However, ca"handle" c6has a cbFree Spinc6!")
  282.         freespins=freespins-1;tr key1;signal PLAY;end
  283.     tr '"Hopefully you''ll do better next call!", 'hostM' explains.'
  284.     call WL("ca"handle" c6is cffinished c6for this turn.")
  285.     Lhan=handle;call SAVEPLAYERS;call SAVEDATA;signal QUIT2
  286. SURPRISE: /* The "Surprise" spot hits on the Wheel. Pick 1 of 6 Awards! */
  287.     call WL("ca"handle" c6just landed on cfSURPRISEc6!")
  288.     tr 'n1"Wow, SURPRISE!", 'hostM' exclaims!'
  289.     a=random(1,6);a='SURPRISE'a;signal (a)
  290. SURPRISE1: /* The "Free Spin" Surprise (Default # 1) */
  291.     call WL("ca"handle"c6's cfSURPRISE c6is a cbFREE SPINc6!")
  292.     se 'n1"Well, 'handle' your Surprise is a FREE SPIN!", 'hostM' informs '
  293.     tr 'you.';freespins=freespins+1;tr key1;signal PLAY
  294. SURPRISE2: /* The "Free Vowel" Surprise (Default # 2) */
  295.     if vowels=0 then signal SURPRISE3
  296.     call WL("ca"handle"c6's cfSURPRISE c6is a ceFREE VOWELc6!")
  297.     se 'n1"Hey 'handle', Congratulations, your SURPRISE is to '
  298.     tr 'BUY a VOWEL for FREE!", 'hostM' states.n1'
  299.     moncur=moncur+250;signal SURPRISE0A
  300. SURPRISE3: /* The "More than $1000" Surprise (Default # 3) */
  301.     c=random(1000,1500);money=c;call CNUM(money)
  302.     call WL("ca"handle"c6's cfSURPRISE c6is c2$ca"a" c6on cfThe Wheelc6!")
  303.     se 'n1Pulling out a white envelope, 'hostM' opens it and says, "'handle
  304.     tr ', this next guess will be worth $'a' bucks! Good Luck!"n1'
  305.   signal SURPRISE0B
  306. SURPRISE4: /* First Configurable Surprise  (1st Surprise in CONFIG) */
  307.     suPR=suPR1;suVA=suVA1;signal SURPRISE7
  308. SURPRISE5: /* Second Configurable Surprise (2nd Surprise in CONFIG) */
  309.     suPR=suPR2;suVA=suVA2;signal SURPRISE7
  310. SURPRISE6: /* Third Configurable Surprise  (3rd Surprise in CONFIG) */
  311.     suPR=suPR3;suVA=suVA3
  312. SURPRISE7: /* Dishes out Surprise is one of the Configurable ones! */
  313.     if suPR=5 then signal SURPRISE2;if suPR=6 then signal SURPRISE1;if suPR=4 then signal SURPRISE3
  314.     if (suPR=0 & InfTimeR=1) | (suPR=1 & InfGameP=1) | (suPR=2 & InfByteC=1) | (suPR=3 & InfFileC=1) then do
  315.         a=random(1,3);a='SURPRISE'a;signal (a);end
  316.     if suPR=0 then do;addtime (suVA)
  317.         call WL("ca"handle"c6's cfSURPRISE c6is ca"suVA" cfExtra Minutesc6!")
  318.         se sysop' waves 'hostM' over to him.  When he returns, 'hostM' tells you, '
  319.         se '"Congrats 'handle', 'sysop' has given you 'suVA
  320.         tr ' Extra Minutes Online!"n1'key1;end
  321.     if suPR=1 then do;addpoints (suVA);call CNUM(suVA)
  322.         call WL("ca"handle"c6's cfSURPRISE c6is ca"suVA" cfPfile Game Pointsc6!")
  323.         se 'The Director tells 'hostM' he has a phone call from 'sysop'. When '
  324.         se 'he returns, 'hostM' tells you, "Hey 'handle', Guess what?! 'sysop
  325.         tr ' has decided to give you 'a' Pfile Game Points. Congrats!"n1'key1;end
  326.     if suPR=2 then do;gu 35;a=result;a=a+suVA;setobject a;putuser 35;call CNUM(suVA)
  327.         call WL("ca"handle"c6's cfSURPRISE c6is ca"suVA" cfByte Creditsc6!")
  328.         se hostF' steps offstage, then returns with a satisfied grin on her face, '
  329.         se '"I''ve just been with 'sysop'! He wants you to receive 'a
  330.         tr ' Byte Credits as your Surprise! Good Going!"n1'key2;end
  331.     if suPR=3 then do;gu 34;a=result;a=a+suVA;setobject a;putuser 34
  332.         call WL("ca"handle"c6's cfSURPRISE c6is ca"suVA" cfFile Creditsc6!")
  333.         se hostF' faints dead away on the stage. When she comes to, she tells '
  334.         se 'you, "I''ve just had a vision from 'sysop'!  In it, he told me '
  335.         tr 'to make sure you received 'suVA' File Credits right now!"n1'key2;end
  336.   signal PLAY
  337.  
  338. BUYVOWEL: /* User presses "B" to Buy a Vowel. */
  339.     if vowels=0 then do;se 'n1'hostM' reminds you, "'handle', '
  340.         tr 'remember, there are ONLY CONSONANTS left in this puzzle."'
  341.         call WL("ca"handle" c6tried to cfBUY A VOWEL c6with ceONLY CONSONANTS c6left!")
  342.         tr key1;signal PLAY;end
  343.     if moncur<300 then do
  344.         call WL("ca"handle" c6tried to ceBUY c6a cbVowel c6with only c2$ca"moncur"c6!")
  345.         se 'n1'hostM' informs you Vowels Cost $250, and that you''ll '
  346.         tr 'need at least $300 to buy one!n1'key1;signal PLAY;end
  347.     se 'f1n4Turning towards you, 'hostM' says, "'handle', enter the '
  348.     tr 'VOWEL you wish to Guess. Remember, this will cost you $250!"n1'
  349. SURPRISE0A: /* If a Surprise comes up on the Wheel for a Free Vowel! */
  350.     call SHOWPUZZLE;action='Played ';se 'Type Your Guess: '
  351. BUYVOWEL1: /* Come back here if user guesses a vowel already guessed. */
  352.     gc;guess=result;ck=CHECK();bf;if index(vows,guess)=0 then signal BUYVOWEL1;else se guess
  353.     call WL("ca"handle" ceBUYS c6the cbVowel c9"guess"c6...")
  354.     if index(guessed,guess)>0 then do
  355.         call WL("c6But that cbVowel c6was c9Already c6guessed!")
  356.         se '  Vowel Already Guessed!!w1hfhb'
  357.         signal BUYVOWEL1;end
  358.     if index(answer,guess)>0 then do;tr '  >>>---> GOOD GUESS!n1'
  359.         g=guessed;if g='' then g=guess;else g=g'-'guess
  360.         guessed=g;call COUNT;vowels=vowels-tot
  361.         call UNCOVER;moncur=moncur-250
  362.         if tot=1 then call WL("c6There was ce1 c9"guess"c6 in the puzzle: "puzzle)
  363.         if tot>1 then call WL("c6There were ce"tot" c9"guess"c6's in the puzzle: "puzzle)
  364.         if tot=1 then se left(spa,20)'There is 1 "'guess'" '
  365.             else se left(spa,20)'There are 'tot' "'guess'"''s '
  366.         tr 'in the puzzle.n1'key1;signal PLAY;end
  367.     if index(answer,guess)=0 then do;tr '  >>>---> WRONG!!n1'
  368.         g=guessed;if g='' then g=guess;else g=g'-'guess
  369.         guessed=g;Lhan=handle;moncur=moncur-250
  370.         call WL("c6But there were cbNO c9"guess"c6's in the puzzle: "guessed)
  371.         if freespins=0 then do;tr 'Awwww... Better luck next time.n1'
  372.         call WL("ca"handle" c6is cffinished c6for this turn.")
  373.             call SAVEPLAYERS;call SAVEDATA;signal QUIT2;end
  374.         tr 'But not to worry, You have a Free Spin!'
  375.         call WL("c6However, ca"handle" c6has a cbFree Spinc6!")
  376.         freespins=freespins-1;tr key1;signal PLAY;end
  377.  
  378. GUESSPUZZLE: /* Ask for Puzzle Guess & if the USER guesses WRONG! */
  379.     if zero=0 & moncur<100 then do
  380.         se 'n1'hostM' wipes his brow, then looks at you, "Sorry, 'handle
  381.         se ', but you need more than $100 before you can attempt to GUESS '
  382.         tr 'this puzzle!"n1'key1;signal PLAY;end
  383.     se 'f1n5Startled, 'hostM' asks, "So, 'handle', you think you know '
  384.     tr 'this puzzle.  Well, good luck in guessing it!"n1'
  385.     call WL("ca"handle" c6will try and cfSOLVE c6the puzzle...")
  386.     call SHOWPUZZLE;len=length(puzzle)
  387.     tr 'n1Type your Guess below the Current Puzzle:n1'
  388.     tr ' The Puzzle Now: 'translate(puzzle,hide,'@')
  389.     if gasc=0 then do;tr 'Your Best Guess: i4225 'len'}'
  390.         gu 70;solve=result;ck=CHECK();signal ASC4;end
  391.     if gasc=2 then do;pu=translate(puzzle,'@',hide)
  392.       se "Your Best Guess: ";solve='';c=1
  393. ASC1:;if c<=length(pu) then z=substr(pu,c,1);else z=""
  394.   if z~="@"&z~="" then do;solve=solve||z;se z;signal ASC3;end
  395. ASC2:;gc;a=result;ck=CHECK()
  396.   if a=d2c(13) then do;tr;signal ASC4;end
  397.   if a=d2c(8) then do;if c=1 then signal ASC2;c=c-1
  398.     solve=left(solve,c-1);se "h1";signal ASC2;end;solve=solve||a;se a
  399. ASC3:;c=c+1;signal ASC1;end
  400. ASC4:;if solve~=answer then do
  401.     call WL("c6But, alas, more cbSTUDY c6is needed for this puzzle!")
  402.     se 'n1Shaking his head, 'hostM' tells you, "I''m sorry 'handle
  403.     tr ', but that''s not the correct answer."n1'
  404.     Lhan=handle;if freespins=0 then do
  405.         tr 'Awwww... Try again when a few more letters are showing.'
  406.         call WL("ca"handle" c6is cffinished c6for this turn.")
  407.         call SAVEPLAYERS;call SAVEDATA;signal QUIT2;end
  408.     tr 'But not to worry, You have a Free Spin!'
  409.     call WL("c6However, ca"handle" c6has a cbFree Spinc6!")
  410.     freespins=freespins-1;tr key1;signal PLAY;end
  411. GUESSPUZZLE0: /* The USER guessed the puzzle, and was RIGHT! */
  412.     if solve=answer then do;if olm>0 then do;se "Sending OLM's:   "
  413.             call SENDOLM("   cfCongratulations c6to cd"handle" c6who just c9SOLVED c6the current cbWheel of Fortune cePuzzlec6!");end
  414.         call WL("cfCongratulations c6to ca"handle" c6who just cbSOLVED c6the puzzle!")
  415.         se 'f1n1Clapping his hands, 'hostM' says, "Congratulations 'handle;call CNUM(moncur)
  416.         tr ', You''ve just won $'a' in CASH and PRIZES!"'
  417.         if puPR>0 then do;call CNUM(puVA)
  418.             se 'n1For winning the game, 'sysop' Broadcasting has decided '
  419.             se 'to give you 'a' 'pr.puPR'!  Enjoy them!n1'
  420.             if puPR=1 then addtime (puVA);if puPR=2 then addpoints (puVA)
  421.             if puPR=3 then do;gu 35;b=result;b=b+puVA;setobject (b);putuser 35;end
  422.             if puPR=4 then do;gu 34;b=result;b=b+puVA;setobject (b);putuser 34;end
  423.             call WL("ca"handle" c6was awarded cf"a" c9"pr.puPR"c6 for solving this cfPuzzlec6!");end
  424.         puzwon=puzwon+1;winhan=handle;windate=date;wins=puzwon
  425.         winpuz=answer;played=played+1;monwon=monwon+moncur
  426.         winmon=monwon;percent=((puzwon/played)*100)%1
  427.         winner=winhan'|'winpuz'|'windate'|'winmon'|'wins'|x'
  428.         winners=winners+1;winner.winners=winhan'|'winpuz'|'windate'|x'
  429.         l.1='cc'right('cf'dateL,78,'=')'cc===';l.2='cf  The Win Datec9: cb'dateL
  430.         l.3='cf    The Puzzlec9: ce'answer;l.4='cf   Puzzle Cluec9: ca'clue;call CNUM(winmon)
  431.         l.5='cf Puzzle Winnerc9: cd'handle;l.6='cfTotal Winningsc9:c2$ca'a
  432.         do i=1 to 6;call WL(l.i);end i;if winners>max1 then do;winners=max1
  433.             do i=2 to max1+1;j=i-1;winner.j=winner.i;end i;end
  434.         if played>mostplays then do;se 'n1'hostM' says, "'handle
  435.             tr ', you broke the old MOST PLAYS Record!"'
  436.             call WL("ce  A NEW RECORDc9: cfPlayed the caMOST cfTimes!")
  437.             mostplaysH=winhan;mostplays=played;end
  438.         if wins>mostpuzs then do;se 'n1'hostM' says, "'handle
  439.             tr ', you broke the old MOST PUZZLES Record!"'
  440.             call WL("ce  A NEW RECORDc9: cfWon the caMOST cfPuzzles!")
  441.             mostpuzsH=winhan;mostpuzs=wins;end
  442.         if monwon>mostbank then do;se 'n1'hostM' says, "'handle
  443.             tr ', you broke the old MOST TOTAL WINNINGS Record!"'
  444.             call WL("ce  A NEW RECORDc9: cfWon the caMOST cfBucks cdEVERcf!")
  445.             mostbankH=winhan;mostbank=monwon;end
  446.         if moncur>mostcash then do;se 'n1'hostM' says, "'handle
  447.             tr ', you broke the old MOST WINNINGS Record!"'
  448.             call WL("ce  A NEW RECORDc9: cfWon the caMOST cfBucks in cdONE GAMEcf!")
  449.             mostcashH=winhan;mostcash=moncur;end
  450.         stats.1=mostplaysH'|'mostplays'|x';stats.2=mostpuzsH'|'mostpuzs'|x'
  451.         stats.3=mostbankH'|'mostbank'|x'  ;stats.4=mostcashH'|'mostcash'|x'
  452.         if monwon>=1000000 then do;se 'n1'hostM' says, "'handle", you've won more than One Million "
  453.             tr 'dollars! Adding you to the Regular Millionaires List!"'
  454.             call WL("ce A MILLIONAIREc9: caOne Million cfdollars in cbRegular Prize cfmoney!")
  455.             monwon=monwon-1000000;z=millionaires+1;do i=1 to millionaires
  456.               if index(mil.i,handle)~=0 then do;z=i;leave i;end
  457.             end i ; if z>millionaires then millionaires=z;mills=mills+1
  458.             if mills=mills3 then do;se 'n1After doing so, 'hostM' says, "Hey 'handle", you now have "mills3" MILLION dollars! "
  459.               tr 'I''m adding you as our next ALL TIME BEST WOF PLAYER!"'
  460.               call WL("ce  A NEW BANKERc9: ca"mills3" MILLION cfdollars in cbRegular Prize cfmoney!")
  461.               mills=0 ; BFlag=1 ; zz=bankers+1;do i=1 to bankers
  462.                 if index(bil.i,handle)~=0 then do;zz=i;leave i;end
  463.               end i ; if zz>bankers then bankers=zz
  464.               t=btype.zz ; if t=2|t=3 then t=3 ; else t=1
  465.               if zz=bankers then bills.zz=mills3;else bills.zz=bills.zz+mills3
  466.               bil.zz=bills.zz'|'date'|'handle'|'t'|x'
  467.               if bankers>max3 then do;do i=2 to bankers+1 ; j=i-1 ; bil.j=bil.i ; end i
  468.                 bankers=max3 ; end;call SAVEBANKERS ; call READBANKERS ; mil.z=''
  469.               do i=1 to millionaires ; j=i+1
  470.                 if mil.i='' then do ; mil.i=mil.j ; mil.j='' ; end
  471.               end i ; millionaires=millionaires-1 ; end
  472.             if mills>0 then do ; mil.z=mills'|'date'|'handle'|x'
  473.               if millionaires>mills1 then do
  474.                 do i=2 to mills1+1 ; j=i-1 ; mil.j=mil.i ; end i
  475.                 millionaires=mills1 ; end ; end
  476.             call SAVEMILLIONAIRES;call READMILLIONAIRES;end
  477.         call SAVEWINNERS;call SAVEWINNER;call SAVESTATS;call SAVEPLAYERS
  478.         call WL("c9"right("ce"dateL,78,'-')"c9---");call BONUSROUND
  479.         t1=boncash+(bmills*1000000);t2=monwon+(mills*1000000)
  480.         if (resetM=2&t2>=resetV)|(resetM=4&t1+t2>=resetV)|(resetM=5&BFlag=1) then call RESETGAME
  481.         se 'n1Shaking your hand, 'hostM' tells you, "As the newest Wheel of '
  482.         tr 'Fortune Winner, you have to make a choice."n1'
  483.         tr '    1: Create a New Puzzle for use at a LATER date.n1'
  484.         tr '    2: Let 'bbsname' Generate next puzzle.(DEFAULT)n1'
  485.         se 'What''s your choice, 'handle'? ';gc;ga=result
  486.         if ga~='1' then signal GENERATE
  487.  
  488. MAKEPUZZLE: /* If the USER is making next puzzle, enter the PUZZLE here. */
  489.     tr 'I''ll make it!';se '"OK, 'handle', Please enter your Puzzle:", '
  490.     tr hostM' asks fervently.';tr 'Puzzle:i129 50}';gu 70;a=result;a=strip(a,'b')
  491.     if result='###PANIC' | result='' then signal GENERATE
  492.     if length(a)<9 then do;se 'Whispering in your ear, 'hostF' tells you that '
  493.         se 'puzzle is too short.n1';signal MAKEPUZZLE;end
  494.     se '"'a'"Is this correct 'handle'? (Y/n): '
  495.     gc;b=result;if result='###PANIC' then signal GENERATE
  496.     if b~='N' then do;tr 'Yes!';newpuz=a;end
  497.     if b='N' then do;se 'No. Try Againn1';signal MAKEPUZZLE;end
  498.     se '"Now enter a Clue for your Puzzle, 'handle'", '
  499.     tr hostM' guides you.'
  500. MAKECLUE: /* If the USER is making next puzzle, enter the CLUE here. */
  501.     tr '  Clue:i129 20}';gu 70;a=result;a=strip(a,'b')
  502.     if result='###PANIC' | result='' then signal GENERATE
  503.     if length(a)<3 then do;se 'Pinching your butt, 'hostF' gives you the sign that '
  504.         se 'your clue is too short.n1';signal MAKECLUE;end
  505.     se '"'a'"Is this correct 'handle'? (Y/n): '
  506.     gc;b=result;if result='###PANIC' then signal GENERATE
  507.     if b~='N' then do;tr 'Yes!';newclue=a;end
  508.     if b='N' then do;se 'No. Try Againn1';signal MAKECLUE;end
  509.     author=handle;a=exists(dfile'NewPuz')
  510.     if a=0 then call open(f1,dfile'NewPuz','w')
  511.     if a=1 then call open(f1,dfile'NewPuz','a')
  512.         z=newpuz'|'newclue'|'author'|x';call writeln(f1,z)
  513.     call close(f1);call WL("ca"handle" c6decided to ceMAKE c6a new puzzle...")
  514.     se 'n1'HostM' shakes your hand once again, "Thanks 'handle', we''ll be sure '
  515.     tr 'to use your puzzle sometime in the future."'
  516.  
  517. GENERATE: /* If the BBS will select the next Puzzle. */
  518.     if ga~=1 then tr 'Generate NEW Puzzle!'
  519.     call open(f1,dfile'PuzData','r');a=strip(readch(f1,5),'t',d2c(0))
  520.         if nextpuznum>a then nextpuznum=1
  521.         ptr=((nextpuznum*90)-90)+5;call seek(f1,ptr,'b')
  522.         p=strip(readch(f1,50),'t',d2c(0));c=strip(readch(f1,20),'t',d2c(0))
  523.         a=strip(readch(f1,20),'t',d2c(0));call close(f1);nextpuznum=nextpuznum+1
  524.     newpuz=translate(p,reverse(xrange('!','~')),xrange('!','~'))
  525.     newclue=translate(c,reverse(xrange('!','~')),xrange('!','~'))
  526.     author=translate(a,reverse(xrange('!','~')),xrange('!','~'))
  527.     if author='Pat & Vanna' then author=hosts
  528.     call WL("ca"handle" c6decided to let ce"bbsname" c6choose the next puzzle...")
  529.  
  530. GENERATE2: /* Save NEW Puzzle data for next game. */
  531.     puzplay=puzplay+1;consonants=0;vowels=0;guessed=''
  532.     do i=1 to length(newpuz);z=substr(newpuz,i,1)
  533.         if index(cons,z)>0 then consonants=consonants+1
  534.         if index(vows,z)>0 then vowels=vowels+1
  535.     end i;answer=newpuz;Lhan='No One';clue=newclue
  536.     puzzle=translate(answer,,xrange('A','Z'),'@');newlog=0;call SAVELOG
  537.     if exists(dfile'Log.OLD.ASC') then address command 'delete 'dfile'Log.OLD.ASC';address command 'rename 'dfile'Log.NEW.ASC 'dfile'Log.OLD.ASC'
  538.     if exists(dfile'Log.OLD.ANS') then address command 'delete 'dfile'Log.OLD.ANS';address command 'rename 'dfile'Log.NEW.ANS 'dfile'Log.OLD.ANS'
  539.     if exists(dfile'Log.OLD.IBM') then address command 'delete 'dfile'Log.OLD.IBM';address command 'rename 'dfile'Log.NEW.IBM 'dfile'Log.OLD.IBM'
  540.     call open(f1,dfile'LastPlayer','w');call writeln(f1,'0|No One|No Where|0|0|1|0|x');call close(f1)
  541.     log.1='cfNEW cbGame c6Started Onc9: cb'dateL;newlog=1
  542.     log.2='cf     The NEW Puzzlec9: ce'puzzle;log.3='cf    NEW Puzzle Cluec9: ca'clue
  543.     log.4='cf  NEW Puzzle Authorc9: cd'author;log.5='cc'right('cf'dateL,78,'=')'cc==='
  544.     logs=5;call SAVELOG;se 'n1'hostM' & 'hostF' would like to Thank You for playing '
  545.     se 'Wheel of Fortune today, and hope to see you as a contestant '
  546.     tr 'again someday!';aut=author;call SAVEDATA;if play=1 & handle~=aut then do
  547.         se 'n1'hostM' asks, "Would you like to be the FIRST player of the '
  548.         se 'NEW Game 'handle'?"n1(y/N): ';gc;a=result;if a='Y' then do;tr 'Yes!';signal BEGIN;end
  549.         else tr 'No.';end
  550.   signal QUIT3
  551.  
  552. BONUSROUND: /* Ask to Play Bonus Round & Play if Affirmative! */
  553.     call WL("ca"handle" c6is eligible to play the cfBONUS Roundc6...")
  554.     se 'n1Would YOU like to Play the Bonus Round? [Yes]: ';gc;a=result
  555.     if a='N' then do;tr 'No.';call WL("c6But ca"handle" c9declinesc6 playing! Why?!?");tr 'f1';return;end
  556.     tr 'Yes!';call WL("cfAlrightc6, ca"handle" c6accepts the challenge...");changewhere "WOF Bonus Round"
  557.     if smart=2 then do;se 'n1Would YOU like to Use Smart Bonus Letters? [No]: ';gc;a=result
  558.         if a~='Y' then do;tr 'No.';smart=0;end;else do;tr 'Yes!';smart=1;end;end
  559.     call open(f1,dfile'PuzData','r');a=strip(readch(f1,5),'t',d2c(0))
  560.         if nextbonpuz<1 then nextbonpuz=a;npn=nextbonpuz
  561.         do until length(p)>=minB;ptr=((npn*90)-90)+5;call seek(f1,ptr,'b')
  562.         p=strip(readch(f1,50),'t',d2c(0));npn=npn-1;end
  563.         c=strip(readch(f1,20),'t',d2c(0));a=strip(readch(f1,20),'t',d2c(0))
  564.     call close(f1);newpuz=translate(p,reverse(xrange('!','~')),xrange('!','~'))
  565.     newclue=translate(c,reverse(xrange('!','~')),xrange('!','~'));answer=newpuz
  566.     author=translate(a,reverse(xrange('!','~')),xrange('!','~'));clue=newclue
  567.     puzzle=translate(answer,,xrange('A','Z'),'@');len=length(puzzle)
  568.     prize=random(100,500)*100;call CNUM(prize);let='RSTNLE'
  569.     tr 'f1     o----------------------------------------------------------------o'
  570.     tr '     |>X<>X<>X<>X<>X<>X< Welcome to the Bonus Round >X<>X<>X<>X<>X<>X<|'
  571.     tr '     o----------------------------------------------------------------on1'
  572.     se hostM' explains the Bonus Round, "You''ll be trying to solve a puzzle in a '
  573.     se 'set amount of time.  We''ll give you the letters R, S, T, N, L, and E.  '
  574.     se 'You will also be asked for three(3) more consonants, and one(1) more vowel. '
  575.     se 'If you can solve the Bonus Puzzle before time runs out, you''ll win '
  576.     tr 'today''s Cash Prize of $'a' bucks!"n1'
  577.     if smart=0 & smartB>0 then do;call CNUM(smartB)
  578.         se 'If you select R, S, T, N, L, or E for one of your Additional letters, '
  579.         se 'and then SOLVE the Bonus Puzzle, you will be awarded $'a' bucks, '
  580.         tr 'in addition to Today''s Cash Prize.n1';end
  581.     do ii=1 to 6;guess=substr(let,ii,1);call UNCOVER;end ii
  582.     tr '    The Bonus Puzzle: 'translate(puzzle,Hide,'@')'n1'
  583.     tr '      The Bonus Clue: 'clue
  584. BROUND1: /* Come back here if Smart Bonus is ON and "RSTNL" is guessed. */
  585.     se 'n1Enter three(3) more consonants:i4225 3}';gu 70;a=result;ck=CHECK();a1=left(a,1);a2=substr(a,2,1);a3=substr(a,3,1);if a1="!"&MFlag=1 then do;tr 'n1'answer;signal BROUND1;end
  586.     if index(cons,a1)=0|index(cons,a2)=0|index(cons,a3)=0 then do;tr 'n1Please type THREE CONSONANTS now!';signal BROUND1;end
  587.     if smart=1 & index(let,a1)~=0 then tr 'n1The consonant 'a1' was already given to you.'
  588.     if smart=1 & index(let,a2)~=0 then tr 'n1The consonant 'a2' was already given to you.'
  589.     if smart=1 & index(let,a3)~=0 then tr 'n1The consonant 'a3' was already given to you.'
  590.     if smart=1 & (index(let,a1)~=0|index(let,a2)~=0|index(let,a3)~=0) then signal BROUND1
  591. BROUND2: /* Come back here if Smart Bonus is ON and "E" is guessed. */
  592.     se 'n1  Enter one(1) more  vowel now:i4225 1}';gu 70;a4=result;ck=CHECK()
  593.     if index(vows,a4)=0 then do;tr 'n1Please type ONE VOWEL now!';signal BROUND2;end
  594.     if smart=1 & a4='E' then do;tr 'n1The vowel E was already given to you.';signal BROUND2;end
  595.     do ii=1 to 4;guess=substr(a1||a2||a3||a4,ii,1);call UNCOVER;end ii
  596.     Bprize=0;do ii=1 to 4;if index(let,substr(guess,ii,1))>0 then Bprize=1;end ii
  597.     se 'n1'hostF' nudges 'hostM' to bring him out of his stupor, "Alright, 'handle', '
  598.     se 'you will be given 'timer' seconds to solve the Bonus Puzzle! '
  599.     tr 'Press any key when you''re ready to Start the Bonus Round!"n1'key1
  600.     tr 'f1    o------------------------------------------------------------------o'
  601.     tr '    |>X<>X<>X<>X<>X<>X< Can You Win the Bonus Round? >X<>X<>X<>X<>X<>X<|'
  602.     tr '    o------------------------------------------------------------------on1'
  603.     se '    The Bonus Prize is: $';call CNUM(prize);tr a' bucks!n1'
  604.     tr '   Bonus Letters Given: R-S-T-N-L-E-'a1'-'a2'-'a3'-'a4'n1'
  605.     tr '     The Bonus Clue is: 'clue'n1'
  606.     tr '   The Bonus Puzzle is: 'translate(puzzle,hide,'@')'n1'
  607.     t=timer;call time('r');bf;if gasc=0 then do;se '   Your Bonus Guess is: _';z='';zz=''
  608. GUESS: /* Get next letter of user's Bonus Guess. */
  609.     maygetchar;a=result;ck=CHECK();if time('e')>=t then do;bf;signal OUTOFTIME;end
  610.     if a='NOCHAR' then signal GUESS;if a=d2c(8) & z='' then signal GUESS
  611.     if a=d2c(8)  & z~='' then do;z=left(z,length(z)-1);se 'h2_';signal GUESS;end
  612.     if a=d2c(13) & z=answer then signal GOODGUESS;if a=d2c(13) & z~=answer then signal BADGUESS
  613.     zz=upper(a);z=z||zz;se 'h1'zz'_';signal GUESS;end
  614.     if gasc=2 then do;pu=translate(puzzle,'@',hide);se "   Your Bonus Guess is: _";solve='';c=1
  615. BASC1:;if c<=length(pu) then z=substr(pu,c,1);else z=""
  616.   if z~="@"&z~="" then do;solve=solve||z;se "h1"z"_";signal BASC3;end
  617. BASC2:;maygetchar;a=result;ck=CHECK();if time('e')>=t then do;bf;signal OUTOFTIME;end
  618.   if a='NOCHAR' then signal BASC2
  619.   if a=d2c(8) then do;if c=1 then signal BASC2;c=c-1
  620.     solve=left(solve,c-1);se "h2_";signal BASC2;end
  621.   if a=d2c(13) & solve=answer then signal GOODGUESS
  622.   if a=d2c(13) & solve~=answer then signal BADGUESS
  623.   solve=solve||upper(a);se "h1"upper(a)"_"
  624. BASC3:;c=c+1;signal BASC1;end
  625.  
  626. OUTOFTIME: /* User ran out of time while trying to guess the Bonus Puzzle. */
  627.     call WL("ca"handle" c9ran out of time c6in the cfBonus Roundc6!");bf
  628.     se 'n2'hostM' looks at 'hostF' and frowns, "I''m sorry 'handle', but '
  629.     se 'time has run out.  Hopefully, we''ll see you in another Bonus '
  630.     tr 'Round sometime soon!"n1';if showB=2 | showB=4 then tr '  The Bonus Puzzle was: 'answer
  631.     tr key1;tr 'f1'
  632.   signal ENDBONUS
  633.  
  634. GOODGUESS: /* User guessed Bonus Puzzle, and got it RIGHT! */
  635.     if olm>0 then do;se "n2Sending OLM's:   "
  636.         call SENDOLM("   cfCongratulations c6to cd"handle" c6who just c9SOLVED c6the cbWheel of Fortune cfBONUS cePuzzlec6!");end
  637.     call WL("cfCongratulations c6to ca"handle" c6who just cbSOLVED c6the cfBONUS Puzzlec6!");bf
  638.     se 'n2Jumping up and down, you grab 'hostF' in a bear hug and she squeals. '
  639.     se hostM' confronts you, "Calm down 'handle', great job, you solved '
  640.     se 'today''s Bonus Puzzle, and win $';call CNUM(prize);tr a' bucks doing it!"n1'key1
  641.     tr 'f1'hostM' continues, "'handle', you''ve also just won:"n1'
  642.     a=right(random(1,20),2,'0');tr '*6'dfile'Graphics/Prize'a'.asc}n1'key1
  643.     prizes=prizes+1;prize.prizes=date'|'prize'|'bpPR'|'bpVA'|'Bprize'|'smartB'|'a'|x'
  644.     if prizes>20 then do;do i=1 to 21;j=i+1;prize.i=prize.j;end i;prizes=20;end;call SAVEWOF
  645.     if bpPR>0 then do;call CNUM(bpVA)
  646.         se 'n1For solving the BONUS Puzzle, 'sysop' Broadcasting has decided '
  647.         se 'to give you 'a' 'pr.bpPR'!  Enjoy them!n1'key1
  648.         if bpPR=1 then addtime (bpVA);if bpPR=2 then addpoints (bpVA)
  649.         if bpPR=3 then do;gu 35;b=result;b=b+bpVA;setobject (b);putuser 35;end
  650.         if bpPR=4 then do;gu 34;b=result;b=b+bpVA;setobject (b);putuser 34;end
  651.         call WL("ca"handle" c6was awarded cf"a" c9"pr.bpPR"c6 for solving the ceBonus Puzzlec6!");end
  652.     if Bprize=1 & smartB>0 then do;call CNUM(smartB)
  653.         call WL("ca"handle" c6also won c2$ca"a" cfbucks c6from the ceSmart Bonus Prizec6!")
  654.         se 'n1You have also won $'a' bucks as the Smart Bonus Prize winner!n1'key1
  655.         boncash=boncash+smartB;end
  656.     bonwins=bonwins+1;boncash=boncash+prize;tr 'f1'
  657.     if bonwins>mostbwins then do;se 'n1'hostM' says, "'handle
  658.         tr ', you broke the old MOST BONUS WINS Record!"'
  659.         call WL('ce  A NEW RECORDc9: cfWon the caMOST BONUS GAMES cdEVERcf!')
  660.         mostbwinsH=handle;mostbwins=bonwins;end
  661.     if boncash>mostbcash then do;se 'n1'hostM' says, "'handle
  662.         tr ', you broke the old MOST BONUS CASH Record!"'
  663.         call WL('ce  A NEW RECORDc9: cfWon the caMOST BONUS CASH cdEVERcf!')
  664.         mostbcashH=handle;mostbcash=boncash;end
  665.     stats.5=mostbwinsH'|'mostbwins'|x';stats.6=mostbcashH'|'mostbcash'|x'
  666.     bwinner=handle'|'answer'|'date'|'prize'|'bonwins'|x';bwinners=bwinners+1
  667.     bwinner.bwinners=handle'|'answer'|'date'|'prize'|x';if bwinners>max2 then do
  668.         do i=2 to max2+1;j=i-1;bwinner.j=bwinner.i;end i;bwinners=max2;end
  669.     if boncash>=1000000 then do;se 'n1'hostM' says, "'handle", you've won more than One Million "
  670.         tr 'dollars! Adding you to the Bonus Round Millionaires List!"'
  671.         call WL("ce A MILLIONAIREc9: caOne Million cfdollars in cbBONUS Prize cfmoney!")
  672.         boncash=boncash-1000000;z=bmillionaires+1;do i=1 to bmillionaires
  673.           if index(bmil.i,handle)~=0 then do;z=i;leave i;end
  674.         end i;if z>bmillionaires then bmillionaires=z;bmills=bmills+1
  675.         if bmills=mills3 then do;se 'n1After doing so, 'hostM' says, "Hey 'handle", you now have "mills3" MILLION dollars! "
  676.           tr 'I''m adding you as our next ALL TIME BEST WOF PLAYER!"'
  677.           call WL("ce  A NEW BANKERc9: ca"mills3" MILLION cfdollars in cbBonus Prize cfmoney!")
  678.           bmills=0 ; BFlag=1 ; zz=bankers+1;do i=1 to bankers
  679.             if index(bil.i,handle)~=0 then do;zz=i;leave i;end
  680.           end i ; if zz>bankers then bankers=zz
  681.           t=btype.zz ; if t=1|t=3 then t=3 ; else t=2
  682.           if zz=bankers then bills.zz=mills3;else bills.zz=bills.zz+mills3
  683.           bil.zz=bills.zz'|'date'|'handle'|'t'|x'
  684.           if bankers>max3 then do;do i=2 to bankers+1 ; j=i-1 ; bil.j=bil.i ; end i
  685.             bankers=max3 ; end;call SAVEBANKERS ; call READBANKERS ; bmil.z=''
  686.           do i=1 to bmillionaires ; j=i+1;if bmil.i='' then do ; bmil.i=bmil.j ; bmil.j='' ; end
  687.           end i ; bmillionaires=bmillionaires-1 ; end
  688.         if bmills>0 then do;bmil.z=bmills'|'date'|'handle'|x'
  689.           if bmillionaires>mills2 then do;do i=2 to mills2+1;j=i-1;bmil.j=bmil.i;end i
  690.             bmillionaires=mills2;end;end
  691.         call SAVEBMILLIONAIRES;call READBMILLIONAIRES;end
  692.     call SAVESTATS;call SAVEBWINNER;call SAVEBWINNERS;call SAVEPLAYERS
  693.   signal ENDBONUS
  694.  
  695. BADGUESS: /* User guessed Bonus Puzzle, but was wrong. */
  696.     call WL("ca"handle" c9incorrectly guessed c6the cfBonus Puzzlec6!");bf
  697.     se 'n2Looking at the white card in his hand, 'hostM' walks over to you, "I''m '
  698.     se 'sorry 'handle', but that''s an incorrect guess of this Bonus '
  699.     tr 'Puzzle. Better luck next time, eh?"n1'
  700.     if showB=3 | showB=4 then tr '   The Bonus Puzzle was: 'answer
  701.     tr key1;tr 'f1'
  702.   signal ENDBONUS
  703.  
  704. ENDBONUS: /* Exit Bonus Round, regardless of how it turned out. */
  705.     call READDATA;nextbonpuz=npn-1;call SAVEDATA;changewhere "WOF ASC Game"
  706.     t1=boncash+(bmills*1000000);t2=monwon+(mills*1000000)
  707.     if (resetM=3&t1>=resetV)|(resetM=4&t1+t2>=resetV)|(resetM=5&BFlag=1) then call RESETGAME
  708.   return
  709.  
  710. CANCELGAME: /* SysOp Command; Cancels & AutoGenerates a NEW Game */
  711.     tr 'n1'hostM' asks, "You really want to CANCEL this Game?"';se '(y/N) >>>---> '
  712.     gc;a=result;if a~='Y' then do;tr 'No!';signal MAIN;end
  713.     call WL("z4cf   "sysop" has decided to c9CANCEL cfthis game! (Errors?)  z0n1")
  714.     call WL("cf     The Puzzle Wasc9: ce"puzzle"n1")
  715.     call WL("cf     The Answer Wasc9: ca"answer"n1")
  716.     tr 'Yes!';signal GENERATE
  717.  
  718. COUNT: /* How many of guessed letter appears in the puzzle? */
  719.     tot=0;len=length(answer)
  720.     do i=1 to len;a=substr(answer,i,1)
  721.     if guess=a then tot=tot+1;end i
  722.   return
  723.  
  724. UNCOVER: /* Displays chosen letters in the puzzle. */
  725.     do i=1 to len;z=substr(answer,i,1)
  726.     if guess=z then puzzle=overlay(guess,puzzle,i,1);end i
  727.   return
  728.  
  729. SHOWPUZZLE: /* How is the Current Puzzle doing? */
  730.     tr ' Current Puzzle: 'translate(puzzle,Hide,'@')
  731.     tr '    Puzzle Clue: 'clue
  732.     tr 'Guessed Letters: 'guessed
  733.   return
  734.  
  735. CNUM: /* Comma Number Parser (Place commas inside numbers) */
  736.     parse arg a;b=length(a);if b=4 then a=insert(',',a,1,1)
  737.     if b=5 then a=insert(',',a,2,1);if b=6 then a=insert(',',a,3,1)
  738.     if b=7 then do;a=insert(',',a,1,1);a=insert(',',a,5,1);end
  739.   return
  740.  
  741. SAVELASTPLAYER: /* Save info on the Last Player of the Game. */
  742.     a=sid'|'handle'|'street'|'voice'|'data'|'right(date('s'),2)'|'left(time(),2)'|x'
  743.     call open(f1,dfile'LastPlayer','w');call writeln(f1,a);call close(f1)
  744.   return
  745.  
  746. READLASTPLAYER: /* Read info on the Last Player of the Game. */
  747.     call open(f1,dfile'LastPlayer','r');a=readln(f1);call close(f1)
  748.     parse var a Lsid'|'Lhan'|'Lstr'|'Lvoi'|'Ldat'|'Lday'|'Lhrs'|'j
  749.     cd=right(date('s'),2);ch=left(time(),2);el=(((cd-Lday)*24)+(ch-Lhrs))
  750.     Lflag=0;Mflag=0
  751.     if Last=0 & (sid=Lsid | handle=Lhan) then Lflag=1
  752.     if Last=1 & (sid=Lsid | handle=Lhan | street=Lstr | voice=Lvoi | data=Ldata) then Lflag=1
  753.  
  754.     if maint=1 & sid=1 then Mflag=1;if maint=2 & access=23 then Mflag=1
  755.     if maint=3 & access=31 then Mflag=1;if maint=4 & maintA>0 then Mflag=1
  756.   return
  757.  
  758. WL:;parse arg log;logs=logs+1;log.logs=log;return /* Note Log Info */
  759.  
  760. SAVELOG: /* Save data to all three Game Logs. */
  761.     a='ANS IBM ASC';if newlog=0 then se 'n1Saving Game Logs...'
  762.         else se 'n1Creating NEW Logs... '
  763.     do i=1 to 3;b=subword(a,i,1);f='Log.NEW.'||b
  764.         call open(f1,dfile||f,substr('wa',exists(dfile||f)+1,1))
  765.             do j=1 to logs;if i=1 then call writeln(f1,log.j)
  766.                 if i=2 then call writeln(f1,translate(log.j,'─═','-='))
  767.                 if i=3 then do;do until c=0;c=index(log.j,'')
  768.                     if c>0 then log.j=delstr(log.j,c,3);end;call writeln(f1,log.j);end
  769.             end j;call close(f1)
  770.     end i;tr 'h8h8ed!'
  771.   return
  772.  
  773. HOFAME: /* Display BEST Scores ever obtained in WOF. */
  774.     call WL("ca"handle" c6viewed the cfHALL OF FAMEc6!")
  775.     tr 'f1n1'hostM' says, "Here are the High Scores 'handle'!"n1'
  776.     tr "     High Scorer's Handle       High Score Broken       Score To Beat"
  777.     tr "    ======================   =======================   ==============="
  778.     tr right(mostplaysH,25)'        Most Games EVER           'mostplays;call CNUM(mostbank)
  779.     tr right(mostbankH,25)'        Most Money EVER          $'a
  780.     tr right(mostpuzsH,25)'        Most Games EVER           'mostpuzs;call CNUM(mostcash)
  781.     tr right(mostcashH,25)'     Most Money In 1  Game       $'a
  782.     tr right(mostbwinsH,25)'     Most BONUS Games EVER        'mostbwins;call CNUM(mostbcash)
  783.     tr right(mostbcashH,25)'     Most BONUS Cash  EVER       $'a
  784.     tr '    ======================   =======================   ===============n1'
  785.     se '           View All Time Best WOF Player Listing Now? [Yes]: ';gc;a=result
  786.     if a='N' then do;tr 'No.';return;end;else do;tr 'Yes!';call BANKERS;end
  787.   return
  788.  
  789. YOURSTATS: /* Display Stats for Current Player. */
  790.     z1st='No.';do i=1 to bankers;if index(bil.i,handle)~=0 then do;z1st='Yes!';z=i;leave i;end;end i
  791.     z2st='No.';do i=1 to millionaires;if index(mil.i,handle)~=0 then do;z2st='Yes!';leave i;end;end i
  792.     if z2st='No.'&z1st='Yes!'&(btype.z=1|btype.z=3) then z2st='Not Presently!'
  793.     z3st='No.';do i=1 to bmillionaires;if index(bmil.i,handle)~=0 then do;z3st='Yes!';leave i;end;end i
  794.     if z3st='No.'&z1st='Yes!'&(btype.z=2|btype.z=3) then z3st='Not Presently!'
  795.     call WL("ca"handle" c6viewed current cbGAME STATSc6!")
  796.     tr 'f1n1'hostM' says, "Here are your stats 'handle'!"n1';call CNUM(monwon)
  797.     tr '                        Winning Statistics    Score'
  798.     tr '  =========================================  =========='
  799.     tr '         Total Number of Games You Have Won:  'puzwon
  800.     tr "    Percentage of Times You've Won the Game:  "percent'%';call CNUM(monwon)
  801.     tr '         Total Amount of Money You Have Won: $'a
  802.     tr '        Are you an All Time Best WOF Player:  'z1st'n1'
  803.     tr '                  Regular Round Statistics    Score'
  804.     tr '  =========================================  =========='
  805.     tr '            Currently Playing Puzzle Number:  'puznum
  806.     tr '      Total Number of Games You Have Played:  'played
  807.     tr '        Are you a Regular Round Millionaire:  'z2st'n1'
  808.     tr '                    Bonus Round Statistics    Score'
  809.     tr '  =========================================  =========='
  810.     tr '         Total Number of BONUS Games Played:  'bonwins;call CNUM(boncash)
  811.     tr "         Total BONUS Prize Money You've Won: $"a
  812.     tr '          Are you a Bonus Round Millionaire:  'z3st
  813.     if prizes>0 then do;se 'n1  Want to view your Prize History now? [No]:  ';gc;a=result
  814.       if a~='Y' then do;tr 'No.';return;end;else tr 'Yes!';call MORE1
  815.       do i=1 to prizes ; parse var prize.i d1'|'d2'|'d3'|'d4'|'d5'|'d6'|'d7'|'j
  816.         d=date('m',d1,'s')' 'strip(right(d1,2),'l','0')', 'left(d1,4)
  817.         se 'f1Date: 'd', Bonus Cash: $';call CNUM(d2);se a', ';call CNUM(d6)
  818.         if d5=1 then se 'Smart Bonus: $'a', ';call CNUM(d4)
  819.         if d3>0 then se 'SysOp Bonus: 'a' 'word('MINUTES GAMEPOINTS BYTECREDITS FILECREDITS',d3)', '
  820.         tr 'and you also won:n1*0 'dfile'Graphics/Prize'd7'.asc}n1'
  821.         if i<prizes then do;se i' of 'prizes' total prizes. <Q>uit, or any other key to continue...';gc;a=result
  822.           if a='Q' then do;tr 'Quit';leave i;end;else tr 'Continue';end
  823.       end i;call MORE0;end;tr key1
  824.   return
  825.  
  826. ALLSCORES: /* Display ALL User Scores. Current Player at TOP & In Listing! */
  827.     call WL("ca"handle" c6viewed cdALL PLAYER SCORESc6!")
  828.     tr 'f1n1'hostM' says, "Here are ALL of the Scores 'handle'!!"n1'
  829.     tr ' Wheel of Fortune     Total    Money  Play   Money  Max  Win Bon.    Bonus R B'
  830.     tr ' Player Alias(Handle)  Wins   Earned  Puz#     Now Play    % Wins Earnings M M'
  831.     tr '==============================================================================='
  832.     parse var player.player d1'|'d2'|'d3'|'d4'|'d5'|'d6'|'d7'|'d8'|'d9'|'d10'|'d11'|'j
  833.     call CNUM(d3);a1=a;call CNUM(d5);a2=a;call CNUM(d9);a3=a;zy=0;zz=0
  834.     if d10>0 then zy=d10;if d11>0 then zz=d11
  835.     se '*'right(d1,20)'  'right(d2,4)' 'right('$'a1,8)'  'right(d4,4)' '
  836.     tr right('$'a2,7)' 'right(d6,4)' 'right(d7'%',4)' 'right(d8,3)'  'right('$'a3,8)" "zy" "zz
  837.     do i=1 to players;if i=player then z='*';else z=' '
  838.         parse var player.i d1'|'d2'|'d3'|'d4'|'d5'|'d6'|'d7'|'d8'|'d9'|'d10'|'d11'|'j
  839.         call CNUM(d3);a1=a;call CNUM(d5);a2=a;call CNUM(d9);a3=a;zy=0;zz=0
  840.         if d10>0 then zy=d10;if d11>0 then zz=d11
  841.         se z||right(d1,20)'  'right(d2,4)' 'right('$'a1,8)'  '
  842.         se right(d4,4)' 'right('$'a2,7)' 'right(d6,4)' 'right(d7'%',4)
  843.         tr ' 'right(d8,3)'  'right('$'a3,8)" "zy' 'zz;if i//15=0 then do
  844.         se '>>>--Enter-->';gc;a=result;if a=d2c(13) then se 'hd'
  845.         else do;tr ' Abort';leave i;end;end;end i
  846.     tr '===========================================================================|=|='
  847.     tr copies(' ',41)"Millions Won in Regular Rounds ---' |"
  848.     tr copies(' ',41)"Millions Won in Bonus   Rounds -----'";tr key1
  849.   return
  850.  
  851. LASTPUZS:;call MORE1   /* Display Last "max1" Winners */
  852.     call WL("ca"handle" c6viewed the ceLAST "max1" WINNERSc6!")
  853.     tr 'f1'hostM' says, "Here are the Last 'max1' Winners, 'handle'!"n1'
  854.     tr '               Who Solved It!           The Date Solvedn1               The Puzzle Text'
  855.     tr '             ========================= ===========================';do i=1 to winners;d1=windate.i
  856.         d=date('m',d1,'s')' 'strip(right(d1,2),'l','0')', 'left(d1,4)
  857.         tr '               'left(winhan.i,25)d'n1               'winpuz.i
  858.     end i;tr '             =====================================================';tr key1;call MORE0
  859.   return
  860.  
  861. BONUSPUZS:;call MORE1  /* Display Last "max2" Bonus Puzzles */
  862.     call WL("ca"handle" c6viewed the ceLAST "max2" BONUS WINNERSc6!")
  863.     tr 'f1'hostM' says, "Here are the Last 'max2' Bonus Puzzle Winners, 'handle'!"n1'
  864.     tr '         Who Solved It!           The Date Solved       Bonus Prizen1         The Puzzle Text'
  865.     tr '       ========================= ===================== ============='
  866.     do i=1 to winners;d1=windate.i;call CNUM(bwincash.i)
  867.         d=date('m',d1,'s')' 'strip(right(d1,2),'l','0')', 'left(d1,4)
  868.         tr '         'left(bwinhan.i,25)left(d,22)'$'a'n1         'bwinpuz.i
  869.     end i;tr '       =============================================================';tr key1;call MORE0
  870.   return
  871.  
  872. MILLIONAIRES:;call MORE1
  873.     if logmil=0 then call WL("ca"handle" c6viewed the ceRegular cfMILLIONAIRES c6listing!")
  874.     tr 'f1n1'hostM' says, "These players won a million dollars in Regular Play!"n1'
  875.     tr "<>X<>X<>X<>X<>X<>X<>X<>X< Regular Game Millionaires >X<>X<>X<>X<>X<>X<>X<>X<>n1"
  876.     tr "           Millionaire's Handle   When They Made It    Total Worth"
  877.     tr "          ====================== ==================== ============="
  878.     do i=1 to millionaires ; se right(milhan.i,31)'   ' ; d1=mildate.i
  879.         d=date('m',d1,'s')' 'strip(right(d1,2),'l','0')', '
  880.         d=d||left(d1,4) ; se left(d,21) ; tr mills.i' Million' ; end i
  881.     tr "          ====================== ==================== =============" ; tr key1;call MORE0
  882.   return
  883.  
  884. BMILLIONAIRES:;call MORE1
  885.     if logmil=0 then call WL("ca"handle" c6viewed the ceBonus cfMILLIONAIRES c6listing!")
  886.     tr 'f1n1'hostM' says, "These players won a million dollars in Bonus Play!"n1'
  887.     tr "<>X<>X<>X<>X<>X<>X<>X<>X< Bonus Round Millionaires >X<>X<>X<>X<>X<>X<>X<>X<>Xn1"
  888.     tr "           Millionaire's Handle   When They Made It    Total Worth"
  889.     tr "          ====================== ==================== ============="
  890.     do i=1 to bmillionaires ; se right(bmilhan.i,31)'   ' ; d1=bmildate.i
  891.         d=date('m',d1,'s')' 'strip(right(d1,2),'l','0')', '
  892.         d=d||left(d1,4) ; tr left(d,21)bmills.i' Million' ; end i
  893.     tr "          ====================== ==================== =============" ; tr key1;call MORE0
  894.   return
  895.  
  896. BANKERS:;call MORE1
  897.     if logmil=0 then call WL("ca"handle" c6viewed the cfBANKERS c6listing!")
  898.     tr 'f1n1'hostM' says, "These players won MORE THAN one million dollars in play!"n1'
  899.     tr "<>X<>X<>X<>X<>X<>X<>X<>X< All Time Best WOF Bankers >X<>X<>X<>X<>X<>X<>X<>X<>n1"
  900.     tr " Millionaire's Handle   When They Made It    How They Made It   Total Worth"
  901.     tr "====================== ==================== ================== ============="
  902.     do i=1 to bankers ; se right(bilhan.i,21)'   ' ; d1=bildate.i
  903.         d=date('m',d1,'s')' 'strip(right(d1,2),'l','0')', 'left(d1,4)
  904.         se left(d,21);z='';if btype.i=3 then z='s'
  905.         se left(word("Neither Regular Bonus Both",btype.i+1)" Round"z,19)
  906.         tr bills.i' Million' ; end i
  907.     tr "====================== ==================== ================== =============" ; tr key1;call MORE0
  908.   return
  909.  
  910. DOCS: /* Display appropriate Doc file. */
  911.     call WL("ca"handle" c6viewed the ccINSTRUCTIONSc6!")
  912.     tr 'f1*4'dfile'Docs.ASC}'
  913.   return
  914.  
  915. CHECK: /* Did we Lose Carrier in the Game? */
  916.     getcarrier;if result="TRUE" then return 1
  917.     tr 'n1No Carrier!';logentry 'No Carrier in WOF 'ver'!'
  918.     call WL("ca"handle" c9Lost Carrier c6during the game!")
  919.   signal QUIT2
  920.  
  921. QUIT: /* If the "Q" command is entered. */
  922.     se 'n1You really wish to QUIT? (Y/n): '
  923.     gc;a=result;if a='N' then do;tr 'No.';return;end
  924.     tr 'Yes!';call SAVEPLAYERS;call SAVEDATA;bad=1
  925. QUIT2: /* Quitting from within the game; After Wins/Losses. */
  926.     call WL("ca"handle" cf"action"cbWheel of Fortune, "ver"!")
  927.     call WL("c9"right('ce'dateL,78,'-')'c9---')
  928.     logentry action'Wheel of Fortune, 'ver'!'
  929.     if Lhan=handle then call SAVELASTPLAYER
  930.     newlog=0;call SAVELOG;bf;changewhere oldwh
  931.     getcarrier;if result="FALSE" then exit
  932.     if badGM=2&badG=2&bad<0 then do
  933.       se "n1ReEnter Wheel of Fortune now? [No]: ";gc;a=result
  934.       if a="Y" then do;tr 'Yes!';signal BEGIN;end;else tr 'No.';end
  935.     if (badGM=1|(badGM=2&badG=1))&bad<0 then signal BEGIN
  936. QUIT3:;if exists(dfile'Reg.ASC') then tr 'f1L70 #'center(resetH,20)'}*0'dfile'Reg.ASC}'key1
  937.     call MUFFLE;call MONITOR;call MORE;exit
  938.  
  939. MENU: /* Main Menu for Wheel of Fortune */
  940.     tr 'f1     O-----------------------------------------------------------------O'
  941.     tr '     | WOF 'left(ver,5)'                             'right(vdate,25)' |'
  942.     tr '     |                                                                 |'
  943.     tr '     |'center('The letter "Y" 'word("ISN'T IS",yvow+1)' a Vowel in this game!',65)'|'
  944.     tr '     |                                                                 |'
  945.     a=copies('>X<',10)' The Wheel Of Fortune Main Menu! 'copies('>X<',10)
  946.     tr '     |'center(a,65)'|'
  947.     tr '     |                                                                 |'
  948.     tr '     |  Completely ReWritten by: Dotoran of Frontiers (716)/823-9892!  |'
  949.     tr '     |                                                                 |'
  950.     a=copies('>X<',10)' 'bbsname' 'copies('>X<',10)
  951.     tr '     |'center(a,65)'|'
  952.     tr '     |                                                                 |'
  953.     tr '     |   <H>all of Fame       <P>lay WOF Game     <V>iew Game Logs     |'
  954.     tr '     |   <Y>our Game Stats    <L>ast 'left(max1' Puzzles',10)'   <S>ee Millionaires   |'
  955.     tr '     |   <A>ll Player Stats   <B>onus Puzzles     <I>nstructions       |'
  956.     if Mflag=1 then tr '     |   <C>ancel This Game   <?>????? Command    <M>aintenance!       |'
  957.     tr '     |                                                                 |'
  958.     tr '     |   <U>ser Config Edit                       <Q>uit the Game      |'
  959.     tr '     O-----------------------------------------------------------------O'
  960.     tr left(spa,(78-(34+length(resetH)))%2)'Current Wheel of Fortune Master: 'resetH'n1'
  961.     tr left(spa,(78-(21+length(Lhan)))%2)'The Last Player Was: 'Lhan
  962.   return
  963.  
  964. READCONFIG: /* Read "ConfigData" File. Holds info on game settings. */
  965.     call open(f1,'pfiles:WoFortune.Config','r')
  966.         v=readln(f1);parse var v j ver vdate;j=readln(f1);dfile=readln(f1)
  967.         j=readln(f1);parse var j closed'|'j'|'Lpor'|'Hpor'|'j
  968.         j=readln(f1);parse var j hosts'|'hostM'|'hostF'|'j
  969.         a1=readln(f1);a2=readln(f1);do 4;j=readln(f1);end
  970.         parse var a1 m1'|'k1'|'j;parse var a2 m2'|'k2'|'j
  971.         a=index(upper(k1),'[H]');if a~=0 then k1=left(k1,a-1)hosts||substr(k1,a+3)
  972.         a=index(upper(k1),'[M]');if a~=0 then k1=left(k1,a-1)hostM||substr(k1,a+3)
  973.         a=index(upper(k1),'[F]');if a~=0 then k1=left(k1,a-1)hostF||substr(k1,a+3)
  974.         a=index(upper(k2),'[H]');if a~=0 then k2=left(k2,a-1)hosts||substr(k2,a+3)
  975.         a=index(upper(k2),'[M]');if a~=0 then k2=left(k2,a-1)hostM||substr(k2,a+3)
  976.         a=index(upper(k2),'[F]');if a~=0 then k2=left(k2,a-1)hostF||substr(k2,a+3)
  977.         Gdata=readln(f1);Bdata=readln(f1)
  978.         parse var Gdata resetM'|'resetV'|'badGM'|'Play'|'Last'|'hide'|'j'|',
  979.                         j'|'zero'|'max1'|'vannaA'|'maint'|'max3'|'mills1'|',
  980.                         mills2'|'mills3'|'chance'|'newplay'|'slow'|',
  981.                         Banked'|'olmM'|'yvow'|'suPR1'|'suVA1'|'suPR2'|',
  982.                         suVA2'|'suPR3'|'suVA3'|'j
  983.         parse var Bdata timer'|'max2'|'minB'|'smart'|'showB'|'smartB'|',
  984.                         puPR1'|'puVA1'|'puPR2'|'puVA2'|'puPR3'|'puVA3'|',
  985.                         bpPR1'|'bpVA1'|'bpPR2'|'bpVA2'|'bpPR3'|'bpVA3'|'j
  986.     call close(f1);gu 1;handle=result;gu 23;port=result
  987.     if open(f1,dfile'LastReset','r') then do;resetD=readln(f1);resetH=readln(f1);call close(f1);end
  988.       else do;resetD=19950625;resetH="No One Yet!";end
  989.     gu 1100454;oldmore=result;gu 1101745;muffle=result;gu 1101746;monitor=result
  990.     call MORE0;if closed=1 then signal CLOSED;call CHECKPORTS
  991.     gv='2306098 2122050 2307346 1101743';parse var gv v1 v2 v3 v4;gu 39;md='mail:users/'result'/_WOF';call READWOF
  992.     p1=1;if cnet=1 then do;v1=v3;v2=v4;p1=0;end;tr 'f1n6Wheel Of Fortune, 'ver
  993.     if muffle=0 then bbscommand 'mu *';if monitor=1 then bbscommand 'um *'
  994.     if olm=2&olmM=2 then do;se 'n1q1Send an OLM Alerting others? [No]: '
  995.         gc;a=result;if a~='Y' then do;tr 'No.';olm=0;end;else tr 'Yes!';end
  996.     if olm=0|olmM=0 then do;se 'q1n1Loading...';signal READCONFIG2;end
  997.     getuser 1100461;sex=result;pro='he';if sex=0 then pro='she'
  998.     text="   cd"handle" c6on cePort cf"port" c6is playing cbWheel of Fortune cf"ver"c6, and won't "
  999.     text=text"be able to receive caOLM's c6from you until "pro" is c9finished "
  1000.     text=text"c6playing!    ce<<z5cf "hosts" z0ce>>"
  1001.     se "q1n1OLM to Port:   ";call SENDOLM(text);se 'n2Loading...'
  1002. READCONFIG2: /* If Broadcast OLM is NOT sent, continue here. */
  1003.     call open(f1,dfile'PuzData','r');total=strip(readch(f1,5),'t',d2c(0));call close(f1)
  1004.     pr.1='Extra Minutes';pr.2='Game Points';pr.3='Byte Credits';pr.4='File Credits'
  1005.     puPR=puPR1;puVA=puVA1;bpPR=bpPR1;bpVA=bpVA1;puPR4=0;puVA4=0;bpPR4=0;bpVA4=0
  1006.     InfTimeR=0;gu 1200684;if result=0 then InfTimeR=1;InfGameP=0;gu 21;if result>999999 then InfGameP=1
  1007.     gu 1200016;age=result;gu 1100663;a=result;a=a+(1-sign(sign(a)+1))*256
  1008.     InfFileC=bittst(d2c(a),6);InfByteC=bittst(d2c(a),7);a=0;b=0
  1009.     if puPR=1 & InfTimeR=1 then a=2;if puPR=2 & InfGameP=1 then a=2
  1010.     if puPR=3 & InfByteC=1 then a=2;if puPR=4 & InfFileC=1 then a=2
  1011.     if a=2 then do;puPR=puPR2;puVA=puVA2
  1012.         if puPR=1 & InfTimeR=1 then a=3;if puPR=2 & InfGameP=1 then a=3
  1013.         if puPR=3 & InfByteC=1 then a=3;if puPR=4 & InfFileC=1 then a=3;end
  1014.     if a=3 then do;puPR=puPR3;puVA=puVA3
  1015.         if puPR=1 & InfTimeR=1 then a=4;if puPR=2 & InfGameP=1 then a=4
  1016.         if puPR=3 & InfByteC=1 then a=4;if puPR=4 & InfFileC=1 then a=4;end
  1017.     if a=4 then do;puPR=puPR4;puVA=puVA4;end
  1018.     if bpPR=1 & InfTimeR=1 then b=2;if bpPR=2 & InfGameP=1 then b=2
  1019.     if bpPR=3 & InfByteC=1 then b=2;if bpPR=4 & InfFileC=1 then b=2
  1020.     if b=2 then do;bpPR=bpPR2;bpVA=bpVA2
  1021.         if bpPR=1 & InfTimeR=1 then b=3;if bpPR=2 & InfGameP=1 then b=3
  1022.         if bpPR=3 & InfByteC=1 then b=3;if bpPR=4 & InfFileC=1 then b=3;end
  1023.     if b=3 then do;bpPR=bpPR3;bpVA=bpVA3
  1024.         if bpPR=1 & InfTimeR=1 then b=4;if bpPR=2 & InfGameP=1 then b=4
  1025.         if bpPR=3 & InfByteC=1 then b=4;if bpPR=4 & InfFileC=1 then b=4;end
  1026.     if b=4 then do;bpPR=bpPR4;bpVA=bpVA4;end
  1027.   return
  1028.  
  1029. READWOF:;if open(f1,md,'r') then do;config=readln(f1);do i=1 until eof(f1)
  1030.   prize.i=readln(f1);end i;prizes=i-1;call close(f1)
  1031.   parse var config olm'|'shomil'|'shobmi'|'shoban'|'vanna'|'OLog'|'NLog'|',
  1032.   spin'|'j'|'j'|'gasc'|'j'|'j'|'badG'|'j;if gasc=1 then gasc=2;return;end
  1033.   else do;call open(f1,md,'w');call writeln(f1,'0|0|0|0|1|0|0|0|1|2|0|2|3|0|x')
  1034.   call close(f1);se '#0 'dfile'UserConfig}';end
  1035.  signal READWOF
  1036.  
  1037. SAVEWOF:;call open(f1,md,'w');call writeln(f1,config);do i=1 to prizes
  1038.     call writeln(f1,prize.i);end i;call close(f1)
  1039.   return
  1040.  
  1041. SENDOLM:;parse arg text;gu v1;path=result;z="00"x;a=''
  1042.     if exists(path'_olm'port) then a='a';name=path'_'a'olm'
  1043.     a='w';t=0;if exists(name) then a='a'
  1044.     h=left(handle,26,z)copies(z,28)text'0A1A0A'x;h=overlay(d2c(1),h,31,2)
  1045.     do i=Lpor to Hpor;n=name||i;getwhere i;w=result
  1046.       if w='Idle'|w='(offline)'|i=port then iterate i
  1047.       call forbid();call open(f1,n,a);call writeln(f1,h);call close(f1)
  1048.       call permit();se 'h2'right(i,2);args=i' 'v2' 'p1' 'port
  1049.       address command "run >nil: rx "dfile"OLM_Proc "args;t=t+1
  1050.     end i;se 'h2't" Total OLM's Sent!"
  1051.   return
  1052.  
  1053. MORE:;setobject oldmore;putuser 1100454;return  /* Reset More? Mode */
  1054. MORE0:;setobject 0;putuser 1100454;return   /* Turn More? Prompt OFF */
  1055. MORE1:;setobject 1;putuser 1100454;return   /* Turn More? Prompt ON  */
  1056. MUFFLE:;if muffle=0 then bbscommand 'mu *';return /* Muffle ALL Ports */
  1057. MONITOR:;if monitor=1 then bbscommand 'um *';return /* Do NOT Monitor ALL Ports */
  1058.  
  1059. CLOSED: /* Is THIS Game Module, or ALL Game Modules CLOSED? */
  1060.     if closed=1 then tr "*4 "dfile"graphics/closed.asc}"
  1061.   signal QUIT3
  1062.  
  1063. CHECKPORTS: /* Is WOF being played on any other ports? */
  1064.     cnet=1;bbsidentify bbs;if subword(result,4,1)='2.63' then cnet=0
  1065.     ports='';bad=-1;gu 23;port=result;do i=Lpor to Hpor
  1066.     if cnet=1 then getwhere i;if cnet=0 then do;b=2621350+(i*4);gu b;end
  1067.     if left(result,3)='WOF' & i~=port then bad=i;end i;if bad=-1 then return
  1068.     se "*4 "dfile"graphics/busy.asc}"
  1069.   signal QUIT3
  1070.  
  1071. READDATA: /* Read "GameData" File. Holds info on current game. */
  1072.     call open(f1,dfile'GameData','r');puzplay=readln(f1)
  1073.         puzzle=readln(f1);answer=readln(f1);guessed=readln(f1)
  1074.         clue=readln(f1)  ;data1=readln(f1) ;data2=readln(f1)
  1075.     call close(f1);parse var data1 author'|'nextpuznum'|'nextbonpuz'|'j
  1076.     parse var data2 consonants'|'vowels'|'j
  1077.     puzzle=translate(puzzle,reverse(xrange('!','~')),xrange('!','~'))
  1078.     answer=translate(answer,reverse(xrange('!','~')),xrange('!','~'))
  1079.     author=translate(author,reverse(xrange('!','~')),xrange('!','~'))
  1080.     clue=translate(clue,reverse(xrange('!','~')),xrange('!','~'))
  1081.   return
  1082.  
  1083. SAVEDATA: /* Save "GameData" File. */
  1084.     puzzle=translate(puzzle,reverse(xrange('!','~')),xrange('!','~'))
  1085.     answer=translate(answer,reverse(xrange('!','~')),xrange('!','~'))
  1086.     author=translate(author,reverse(xrange('!','~')),xrange('!','~'))
  1087.     clue=translate(clue,reverse(xrange('!','~')),xrange('!','~'))
  1088.     data1=author'|'nextpuznum'|'nextbonpuz'|x';data2=consonants'|'vowels'|x'
  1089.     call open(f1,dfile'GameData','w');call writeln(f1,puzplay)
  1090.         call writeln(f1,puzzle) ;call writeln(f1,answer)
  1091.         call writeln(f1,guessed);call writeln(f1,clue)
  1092.         call writeln(f1,data1)  ;call writeln(f1,data2)
  1093.     call close(f1)
  1094.   return
  1095.  
  1096. READBWINNERS: /* Read "BWinners" File. The Past 20 Winners. */
  1097.     call open(f1,dfile'BWinners','r')
  1098.         do i=1 until eof(f1);bwinner.i=readln(f1)
  1099.             parse var bwinner.i bwinhan.i'|'bwinpuz.i'|'bwindate.i'|'bwincash.i'|'j
  1100.         end i;bwinners=i-1
  1101.     call close(f1)
  1102.   return
  1103.  
  1104. SAVEBWINNERS: /* Save "BWinners" File. */
  1105.     call open(f1,dfile'BWinners','w')
  1106.         do i=1 to bwinners;call writeln(f1,bwinner.i);end i
  1107.     call close(f1)
  1108.   return
  1109.  
  1110. READWINNERS: /* Read "Winners" File. The Past 20 Winners. */
  1111.     call open(f1,dfile'Winners','r')
  1112.         do i=1 until eof(f1);winner.i=readln(f1)
  1113.             parse var winner.i winhan.i'|'winpuz.i'|'windate.i'|'j
  1114.         end i;winners=i-1
  1115.     call close(f1)
  1116.   return
  1117.  
  1118. SAVEWINNERS: /* Save "Winners" File. */
  1119.     call open(f1,dfile'Winners','w')
  1120.         do i=1 to winners;call writeln(f1,winner.i);end i
  1121.     call close(f1)
  1122.   return
  1123.  
  1124. SAVEBWINNER: /* Save "BWinner" File. */
  1125.     call open(f1,dfile'BWinner','w')
  1126.         call writeln(f1,bwinner)
  1127.     call close(f1)
  1128.   return
  1129.  
  1130. READWINNER: /* Read "Winner" File. Who was the LAST Winner? */
  1131.     call open(f1,dfile'Winner','r')
  1132.         winner=readln(f1)
  1133.     call close(f1)
  1134.     parse var winner winhan'|'winpuz'|'windate'|'winmon'|'wins'|'j
  1135.   return
  1136.  
  1137. SAVEWINNER: /* Save "Winner" File. */
  1138.     call open(f1,dfile'Winner','w')
  1139.         call writeln(f1,winner)
  1140.     call close(f1)
  1141.   return
  1142.  
  1143. READMILLIONAIRES:
  1144.     call open(f1,dfile'Millionaires','r')
  1145.         do i=1 until eof(f1);mil.i=readln(f1)
  1146.             parse var mil.i mills.i'|'mildate.i'|'milhan.i'|'j
  1147.         end i;millionaires=i-1
  1148.     call close(f1)
  1149.   return
  1150.  
  1151. SAVEMILLIONAIRES:
  1152.     do i=1 to millionaires-1;d=i;do j=i+1 to millionaires;d=d+1
  1153.     if mil.d>mil.i then do;y=mil.i;mil.i=mil.d;mil.d=y;end;end j;end i
  1154.     call open(f1,dfile'Millionaires','w')
  1155.       do i=1 to millionaires;if index(mil.i,'No One Yet')=0 then call writeln(f1,mil.i);end i
  1156.     call close(f1)
  1157.   return
  1158.  
  1159. READBMILLIONAIRES:
  1160.     call open(f1,dfile'BMillionaires','r')
  1161.         do i=1 until eof(f1);bmil.i=readln(f1)
  1162.             parse var bmil.i bmills.i'|'bmildate.i'|'bmilhan.i'|'j
  1163.         end i;bmillionaires=i-1
  1164.     call close(f1)
  1165.   return
  1166.  
  1167. SAVEBMILLIONAIRES:
  1168.     do i=1 to bmillionaires-1;d=i;do j=i+1 to bmillionaires;d=d+1
  1169.     if bmil.d>bmil.i then do;y=bmil.i;bmil.i=bmil.d;bmil.d=y;end;end j;end i
  1170.     call open(f1,dfile'BMillionaires','w')
  1171.         do i=1 to bmillionaires;if index(bmil.i,'No One Yet')=0 then call writeln(f1,bmil.i);end i
  1172.     call close(f1)
  1173.   return
  1174.  
  1175. READBANKERS:
  1176.     call open(f1,dfile'Bankers','r')
  1177.         do i=1 until eof(f1);bil.i=readln(f1)
  1178.             parse var bil.i bills.i'|'bildate.i'|'bilhan.i'|'btype.i'|'j
  1179.         end i;bankers=i-1
  1180.     call close(f1)
  1181.   return
  1182.  
  1183. SAVEBANKERS:
  1184.     do i=1 to bankers-1;d=i;do j=i+1 to bankers;d=d+1
  1185.     if bil.d>bil.i then do;y=bil.i;bil.i=bil.d;bil.d=y;end;end j;end i
  1186.     call open(f1,dfile'Bankers','w')
  1187.         do i=1 to bankers;if index(bil.i,'No One Yet')=0 then call writeln(f1,bil.i);end i
  1188.     call close(f1)
  1189.   return
  1190.  
  1191. READSTATS: /* Read "Stats" File & Initialize These Variables. */
  1192.     call open(f1,dfile'Stats','r')
  1193.         do i=1 to 6;stats.i=readln(f1);end i
  1194.     call close(f1)
  1195.     parse var stats.1 mostplaysH'|'mostplays'|'j
  1196.     parse var stats.2 mostpuzsH'|'mostpuzs'|'j
  1197.     parse var stats.3 mostbankH'|'mostbank'|'j
  1198.     parse var stats.4 mostcashH'|'mostcash'|'j
  1199.     parse var stats.5 mostbwinsH'|'mostbwins'|'j
  1200.     parse var stats.6 mostbcashH'|'mostbcash'|'j
  1201.   return
  1202.  
  1203. SAVESTATS: /* Save "Stats" File. */
  1204.     call open(f1,dfile'Stats','w')
  1205.         do i=1 to 6;call writeln(f1,stats.i);end i
  1206.     call close(f1)
  1207.   return
  1208.  
  1209. READPLAYERS: /* Read "Players" File & Mark Current Player if Exists. */
  1210.     call open(f1,dfile'Players','r');player=0
  1211.         do i=1 until eof(f1);player.i=readln(f1)
  1212.             parse var player.i han'|'j
  1213.             if han=handle then player=i
  1214.         end i;players=i-1
  1215.     call close(f1)
  1216.   return
  1217.  
  1218. SAVEPLAYERS: /* Save "Players" File. */
  1219.     player.player=handle'|'puzwon'|'monwon'|'puznum'|'moncur'|'played'|'percent'|'bonwins'|'boncash'|'mills'|'bmills'|x'
  1220.     call open(f1,dfile'Players','w')
  1221.         do i=1 to players;call writeln(f1,player.i);end i
  1222.     call close(f1);address command "sort "dfile"Players "dfile"Players"
  1223.   return
  1224.  
  1225. SETUP: /* Load "SetUp" Module. */
  1226.     tr '#0'dfile'SetUp}q1';return
  1227.  
  1228. RESETGAME:
  1229.   if resetM=1 then do;se 'f1n1After speaking with 'sysop', 'hostM' tells you, "'handle', your SysOp, 'sysop
  1230.     se ', tells me it''s been 'resetV' months since the last reset of this game! Jeez, you''d think '
  1231.     tr 'he runs the place or something!"';end
  1232.   else do;if olm>0 then do;se "Sending OLM's:   "
  1233.     call SENDOLM("   cfCongratulations c6to cd"handle" c6who just became c9MASTER c6of cbWheel of Fortunec6!");end
  1234.     call WL("cfCongratulations c6to ca"handle" c6who just became c9MASTER c6of cbWheel of Fortunec6!")
  1235.     se 'f1n1Gasping for breath, 'hostM' says, "Congratulations 'handle
  1236.     se ', You''ve just become MASTER of Wheel of Fortune!  We can now RESET '
  1237.     tr 'the game, but not until we immortalize your name for posterity!"'
  1238.     gu 1100461;ge=result;a1=HostF;a2=HostM;a3="hunk";if ge=0 then do;z=a1;a1=a2;a2=zl;a3="babe";end
  1239.     se 'n1While 'a2' takes care of business with the director off stage, '
  1240.     se a1' walks up to you and says, "Wow 'handle', your a 'a3'! Here''s '
  1241.     se 'my phone number. Give me a call tonight, as I have another '
  1242.     tr 'game I''d like to play with you."' ; end
  1243.     se 'n1Resetting player monetary values...';call READPLAYERS;monwon=0;moncur=0;boncash=0;mills=0;bmills=0
  1244.     call open(f1,dfile'Players','w');do i=1 to players
  1245.     parse var player.i v1'|'v2'|'v3'|'v4'|'v5'|'v6'|'v7'|'v8'|'v9'|'v10'|'v11'|'j
  1246.     player.i=v1'|'v2'|0|'v4'|0|'v6'|'v7'|'v8'|0|0|0|x';call writeln(f1,player.i);end i
  1247.     call close(f1);call open(f1,dfile'LastReset','w');call writeln(f1,date('s'))
  1248.     call writeln(f1,handle);call close(f1);tr 'done!n1'key1
  1249.   return
  1250.  
  1251. D0: /* Call The Correct Wheel Graphic Location */
  1252.     b='D'spot;c=spot;se 'f1';signal (b)
  1253. D1: /* 100 */
  1254.     tr '                   ______o=========================o______'
  1255.     tr '                  /            *    ****    ****          \'
  1256.     tr '                 ||           **   *    *  *    *         ||'
  1257.     tr '                 ||            *   *    *  *    *         ||'
  1258.     tr '                 ||            *   * |\ *  *    *         ||'
  1259.     tr '                  \_          ***   *|||    ****         _/'
  1260.     tr '                    \o===============| \\==============o/'
  1261.     tr '                      \_             | ||            _/'
  1262.     tr '                        \_           | ||          _/'
  1263.     tr '                          \_         | ||        _/'
  1264.     tr '                            \_       | ||      _/'
  1265.     tr '                              \_     | ||    _/'
  1266.     tr '                                \_   | ||  _/'
  1267.     tr '                                  \_ | ||_/'
  1268.     tr '                                    \|_|/'
  1269.   return
  1270. D2: /* 150 */
  1271.     tr '                   ______o=========================o______'
  1272.     tr '                  /            *   ******   ****          \'
  1273.     tr '                 ||           **   *       *    *         ||'
  1274.     tr '                 ||            *   *****   *    *         ||'
  1275.     tr '                 ||            *     |\ *  *    *         ||'
  1276.     tr '                  \_          ***  **|||    ****         _/'
  1277.     tr '                    \o===============| \\==============o/'
  1278.     tr '                      \_             | ||            _/'
  1279.     tr '                        \_           | ||          _/'
  1280.     tr '                          \_         | ||        _/'
  1281.     tr '                            \_       | ||      _/'
  1282.     tr '                              \_     | ||    _/'
  1283.     tr '                                \_   | ||  _/'
  1284.     tr '                                  \_ | ||_/'
  1285.     tr '                                    \|_|/'
  1286.   return
  1287. D3: /* 200 */
  1288.     tr '                   ______o=========================o______'
  1289.     tr '                  /         ****    ****    ****          \'
  1290.     tr '                 ||             *  *    *  *    *         ||'
  1291.     tr '                 ||          ***   *    *  *    *         ||'
  1292.     tr '                 ||         *      * |\ *  *    *         ||'
  1293.     tr '                  \_        *****   *|||    ****         _/'
  1294.     tr '                    \o===============| \\==============o/'
  1295.     tr '                      \_             | ||            _/'
  1296.     tr '                        \_           | ||          _/'
  1297.     tr '                          \_         | ||        _/'
  1298.     tr '                            \_       | ||      _/'
  1299.     tr '                              \_     | ||    _/'
  1300.     tr '                                \_   | ||  _/'
  1301.     tr '                                  \_ | ||_/'
  1302.     tr '                                    \|_|/'
  1303.   return
  1304. D4: /* 250 */
  1305.     tr '                   ______o=========================o______'
  1306.     tr '                  /         ****   *****    ****          \'
  1307.     tr '                 ||             *  *       *    *         ||'
  1308.     tr '                 ||          ***   *****   *    *         ||'
  1309.     tr '                 ||         *        |\ *  *    *         ||'
  1310.     tr '                  \_        *****  **|||    ****         _/'
  1311.     tr '                    \o===============| \\==============o/'
  1312.     tr '                      \_             | ||            _/'
  1313.     tr '                        \_           | ||          _/'
  1314.     tr '                          \_         | ||        _/'
  1315.     tr '                            \_       | ||      _/'
  1316.     tr '                              \_     | ||    _/'
  1317.     tr '                                \_   | ||  _/'
  1318.     tr '                                  \_ | ||_/'
  1319.     tr '                                    \|_|/'
  1320.   return
  1321. D5: /* 300 */
  1322.     tr '                   ______o=========================o______'
  1323.     tr '                  /         ****    ****    ****          \'
  1324.     tr '                 ||             *  *    *  *    *         ||'
  1325.     tr '                 ||          ***   *    *  *    *         ||'
  1326.     tr '                 ||             *  * |\ *  *    *         ||'
  1327.     tr '                  \_        ****    *|||    ****         _/'
  1328.     tr '                    \o===============| \\==============o/'
  1329.     tr '                      \_             | ||            _/'
  1330.     tr '                        \_           | ||          _/'
  1331.     tr '                          \_         | ||        _/'
  1332.     tr '                            \_       | ||      _/'
  1333.     tr '                              \_     | ||    _/'
  1334.     tr '                                \_   | ||  _/'
  1335.     tr '                                  \_ | ||_/'
  1336.     tr '                                    \|_|/'
  1337.   return
  1338. D6: /* 400 */
  1339.     tr '                   ______o=========================o______'
  1340.     tr '                  /         *   *   ****    ****          \'
  1341.     tr '                 ||         *   *  *    *  *    *         ||'
  1342.     tr '                 ||         *****  *    *  *    *         ||'
  1343.     tr '                 ||             *  * |\ *  *    *         ||'
  1344.     tr '                  \_            *   *|||    ****         _/'
  1345.     tr '                    \o===============| \\==============o/'
  1346.     tr '                      \_             | ||            _/'
  1347.     tr '                        \_           | ||          _/'
  1348.     tr '                          \_         | ||        _/'
  1349.     tr '                            \_       | ||      _/'
  1350.     tr '                              \_     | ||    _/'
  1351.     tr '                                \_   | ||  _/'
  1352.     tr '                                  \_ | ||_/'
  1353.     tr '                                    \|_|/'
  1354.   return
  1355. D7: /* 450 */
  1356.     tr '                   ______o=========================o______'
  1357.     tr '                  /         *   *  *****    ****          \'
  1358.     tr '                 ||         *   *  *       *    *         ||'
  1359.     tr '                 ||         *****  *****   *    *         ||'
  1360.     tr '                 ||             *    |\ *  *    *         ||'
  1361.     tr '                  \_            *  **|||    ****         _/'
  1362.     tr '                    \o===============| \\==============o/'
  1363.     tr '                      \_             | ||            _/'
  1364.     tr '                        \_           | ||          _/'
  1365.     tr '                          \_         | ||        _/'
  1366.     tr '                            \_       | ||      _/'
  1367.     tr '                              \_     | ||    _/'
  1368.     tr '                                \_   | ||  _/'
  1369.     tr '                                  \_ | ||_/'
  1370.     tr '                                    \|_|/'
  1371.   return
  1372. D8: /* 500 */
  1373.     tr '                   ______o=========================o______'
  1374.     tr '                  /         *****   ****    ****          \'
  1375.     tr '                 ||         *      *    *  *    *         ||'
  1376.     tr '                 ||         ****   *    *  *    *         ||'
  1377.     tr '                 ||             *  * |\ *  *    *         ||'
  1378.     tr '                  \_        ****    *|||    ****         _/'
  1379.     tr '                    \o===============| \\==============o/'
  1380.     tr '                      \_             | ||            _/'
  1381.     tr '                        \_           | ||          _/'
  1382.     tr '                          \_         | ||        _/'
  1383.     tr '                            \_       | ||      _/'
  1384.     tr '                              \_     | ||    _/'
  1385.     tr '                                \_   | ||  _/'
  1386.     tr '                                  \_ | ||_/'
  1387.     tr '                                    \|_|/'
  1388.   return
  1389. D9: /* 600 */
  1390.     tr '                   ______o=========================o______'
  1391.     tr '                  /           ***   ****    ****          \'
  1392.     tr '                 ||          *     *    *  *    *         ||'
  1393.     tr '                 ||         ****   *    *  *    *         ||'
  1394.     tr '                 ||         *   *  * |\ *  *    *         ||'
  1395.     tr '                  \_         ***    *|||    ****         _/'
  1396.     tr '                    \o===============| \\==============o/'
  1397.     tr '                      \_             | ||            _/'
  1398.     tr '                        \_           | ||          _/'
  1399.     tr '                          \_         | ||        _/'
  1400.     tr '                            \_       | ||      _/'
  1401.     tr '                              \_     | ||    _/'
  1402.     tr '                                \_   | ||  _/'
  1403.     tr '                                  \_ | ||_/'
  1404.     tr '                                    \|_|/'
  1405.   return
  1406. D10: /* 750 */
  1407.     tr '                   ______o=========================o______'
  1408.     tr '                  /         *****  *****    ****          \'
  1409.     tr '                 ||             *  *       *    *         ||'
  1410.     tr '                 ||            *   *****   *    *         ||'
  1411.     tr '                 ||           *      |\ *  *    *         ||'
  1412.     tr '                  \_         *     **|||    ****         _/'
  1413.     tr '                    \o===============| \\==============o/'
  1414.     tr '                      \_             | ||            _/'
  1415.     tr '                        \_           | ||          _/'
  1416.     tr '                          \_         | ||        _/'
  1417.     tr '                            \_       | ||      _/'
  1418.     tr '                              \_     | ||    _/'
  1419.     tr '                                \_   | ||  _/'
  1420.     tr '                                  \_ | ||_/'
  1421.     tr '                                    \|_|/'
  1422.   return
  1423. D11: /* 1000 */
  1424.     tr '                   ______o=========================o______'
  1425.     tr '                  /        *    ****     ****    ****     \'
  1426.     tr '                 ||       **   *    *   *    *  *    *    ||'
  1427.     tr '                 ||        *   *    *   *    *  *    *    ||'
  1428.     tr '                 ||        *   *    *|\ *    *  *    *    ||'
  1429.     tr '                  \_      ***   **** ||| ****    ****    _/'
  1430.     tr '                    \o===============| \\==============o/'
  1431.     tr '                      \_             | ||            _/'
  1432.     tr '                        \_           | ||          _/'
  1433.     tr '                          \_         | ||        _/'
  1434.     tr '                            \_       | ||      _/'
  1435.     tr '                              \_     | ||    _/'
  1436.     tr '                                \_   | ||  _/'
  1437.     tr '                                  \_ | ||_/'
  1438.     tr '                                    \|_|/'
  1439.   return
  1440. D12: /* Free Spin */
  1441.     tr '                   ______o=========================o______'
  1442.     tr '                  /     *****  ****      *****  *****     \'
  1443.     tr '                 ||     *      *   *     *      *         ||'
  1444.     tr '                 ||     ***    ****      ***    ***       ||'
  1445.     tr '                 ||     *      *   * |\  *      *         ||'
  1446.     tr '                  \_    *      *   * ||| *****  *****    _/'
  1447.     tr '                    \o===============| \\==============o/'
  1448.     tr '                      \_             | ||            _/'
  1449.     tr '                        \_           | ||          _/'
  1450.     tr '                          \_         | ||        _/'
  1451.     tr '                            \_       | ||      _/'
  1452.     tr '                              \_     | ||    _/'
  1453.     tr '                                \_   | ||  _/'
  1454.     tr '                                  \_ | ||_/'
  1455.     tr '                                    \|_|/'
  1456.   return
  1457. D13: /* Surprise */
  1458.     tr '                   ______o=========================o______'
  1459.     tr '                  /     *       *   *****   *       *     \'
  1460.     tr '                 ||     *       *  *     *  *       *     ||'
  1461.     tr '                 ||     *   *   *  *     *  *   *   *     ||'
  1462.     tr '                 ||     *  * *  *  * |\  *  *  * *  *     ||'
  1463.     tr '                  \_     **   **    *|||*    **   **     _/'
  1464.     tr '                    \o===============| \\==============o/'
  1465.     tr '                      \_             | ||            _/'
  1466.     tr '                        \_           | ||          _/'
  1467.     tr '                          \_         | ||        _/'
  1468.     tr '                            \_       | ||      _/'
  1469.     tr '                              \_     | ||    _/'
  1470.     tr '                                \_   | ||  _/'
  1471.     tr '                                  \_ | ||_/'
  1472.     tr '                                    \|_|/'
  1473.   return
  1474. D14: /* Lose Turn */
  1475.     tr '                   ______o=========================o______'
  1476.     tr '                  /    *       ****       ****  *****     \'
  1477.     tr '                 ||    *      *    *     *      *         ||'
  1478.     tr '                 ||    *      *    *      ***   ***       ||'
  1479.     tr '                 ||    *      *    * |\      *  *         ||'
  1480.     tr '                  \_   *****   ****  ||| ****   *****    _/'
  1481.     tr '                    \o===============| \\==============o/'
  1482.     tr '                      \_             | ||            _/'
  1483.     tr '                        \_           | ||          _/'
  1484.     tr '                          \_         | ||        _/'
  1485.     tr '                            \_       | ||      _/'
  1486.     tr '                              \_     | ||    _/'
  1487.     tr '                                \_   | ||  _/'
  1488.     tr '                                  \_ | ||_/'
  1489.     tr '                                    \|_|/'
  1490.   return
  1491. D15: /* Bankrupt */
  1492.     tr '                   ______o=========================o______'
  1493.     tr '                  /     ****    ***      **    *  *   *   \'
  1494.     tr '                 ||     *   *  *   *     * *   *  *  *    ||'
  1495.     tr '                 ||     ****   *****     *  *  *  ***     ||'
  1496.     tr '                 ||     *   *  *   * |\  *   * *  *  *    ||'
  1497.     tr '                  \_    ****   *   * ||| *    **  *   *  _/'
  1498.     tr '                    \o===============| \\==============o/'
  1499.     tr '                      \_             | ||            _/'
  1500.     tr '                        \_           | ||          _/'
  1501.     tr '                          \_         | ||        _/'
  1502.     tr '                            \_       | ||      _/'
  1503.     tr '                              \_     | ||    _/'
  1504.     tr '                                \_   | ||  _/'
  1505.     tr '                                  \_ | ||_/'
  1506.     tr '                                    \|_|/'
  1507.   return
  1508.  
  1509. TITLE: /* Main Title Screen! */
  1510.     tr '         _________________          *=====================================*'
  1511.     tr '       _/                 \_        | /C\ /?\ /?\ /?\ /T\ ### ### ### ### |'
  1512.     tr '     _/        T H E        \_      | \C/ \?/ \?/ \?/ \T/ ### ### ### ### |'
  1513.     tr '   _/                         \_    |                                     |'
  1514.     tr '  /          W H E E L          \   | /?\ /A\ /?\ /T\ /?\ /?\ /?\ /D\ ### |'
  1515.     tr ' |                               |  | \?/ \A/ \?/ \T/ \?/ \?/ \?/ \D/ ### |'
  1516.     tr ' |              O F              |  *=====================================*'
  1517.     tr ' |                               |'
  1518.     tr '  \_       F O R T U N E       _/                 P E R S O N'
  1519.     tr '    \_                       _/'
  1520.     tr '      \_       'left(ver,5)'       _/           Completely ReWritten by Dotoran!'
  1521.     tr '        \_               _/'
  1522.     tr '          \_____________/               Your Hosts: 'hosts'!!n1'
  1523.   return
  1524.  
  1525. SYNTAX:;ERROR:;IOERR:;e1=' Error: 'rc' ('errortext(rc)')';e2='  Line: 'left(sigl,4)'File:'
  1526.     gu 1311992;a=result;gu 1311960;b=result;c='"'a||b'"';e2=e2' 'c;tr e1;tr e2;logentry e1;logentry e2;e=sourceline(sigl)
  1527.     do while e~='';e3='Source: 'left(e,37);tr e3;logentry e3;e=substr(e,37);end;bufferflush;signal QUIT3
  1528. /** Last Edited: 29-Sep-95 ************************************************\
  1529. \****************************************** FRONTIERS BBS (716)/823-9892 **/
  1530.